Hi! I'm actually thinking about joining and contribute to a open source project (https://github.com/fsphil/hacktv) but in spite of i have a intermediate knoledge of c i think is difficult to understand the code already written.
In order to be able to contribute to the project do i need to understand the full project code and the libraries ( ffmpeg and hackrflib) used? Which is the best way to start working on a project?

If you have some bug fixes or documentation etc then start by forking the github repository. Develop and test your changes then make a pull request to the upstream repository. Be sure to make changes to only one thing at a time. Nobody wants to pull a huge pile of code that fixes 10 bugs and touches dozens of files. If you are lucky the developer will accept your changes.

Be sure to stick to the projects coding style and formatting.

Adding features may be a bit tougher. You will need to know the code well. Your feature idea will have to be in line with where the developer wants to take his project. Perhaps start by suggesting a feature in an issue on the git hub repo, that might get communications going.