Thursday, November 12, 2009

Developing an H.264 codec

I had a good conversation with Dr Ferguson from Meraka Institute in South Africa. 
He developing an optimized BSD licensed version of H.264 codec posted on sourceforge and looking for people to join in the effort. 
There is already the X.264 project that is GPL but as you may know GLP code has some license problems for commercial products. 

Below is a note about the project:

We are developing an H.264 codec for a commercial application and, due to IP (copyright) issues, it is important that the code is rewritten and free from any claim. We also need to get to the macroblock layer to implement some of our new real-time optimal bit allocation algorithms. Therefore to strengthen our case, we have opened it completely with the open BSD license to get as wide an appeal as possible. Our primary objective is to use the open source community as a software quality control mechanism but if anyone willingly participates that will be great. We are writing the C++ code using a bottom-up approach and have so far released the macroblock layer. This codec is a new addition to our open source Video Processing Project ( that includes some other basic filters that some people have found useful.
How are we positioning this implementation? We are interested in real-time software video applications and in this implementation we are attempting to balance fast, readable (OOP) and maintainable code. The 1st version will have limited baseline features to set the code framework before attempting the trickier bits e.g. Intra_16x16 prediction mode only and then later Intra_4x4 modes. The JM software is too slow for commercial applications and is written with too much "C style" to be readable, similarly for the x.264 codec. We are working on SMME implementations for some parts that will eventually appear. A secondary purpose is to make it easy for students/developers to replace our basic implementations with their own implementations of the base tools without worrying about the rest of the codec. We have concentrated on decoupling and encapsulation as best as we can without introducing too much overhead.
We should complete the basic implementation within a few months before tackling compliance issues. Developer comments are most welcome.

Dr Keith Ferguson
CSIR, Meraka Institute
kferguson  @  csir . co . za
(tel) +27 (0)12 841 4433
(cell) +27 (0)73 488 2821

No comments: