PDA

View Full Version : H.264 internals / programming a decoder


BraveToaster
28th February 2007, 15:25
Hi!
I have just started working on my Master's thesis which involves adding interlacing support (MBAFF, PAFF) to an H.264 decoder running on the new Cell processor (used for example in the Playstation3).
I was wondering if anybody in this forum has a good starting point to getting acquainted with the details of the H.264 standard. I have read and understood several introductory papers and also found a late draft of the standard as well as the JM reference implementation, but either the documentation only provides a rough overview or it is so detailed that it is hard to get an understanding. So I was wondering if you have any other documents (maybe one of the X264 developers?).

Also, on a different note, I would appreciate any pointers to tools converting different container formats (MOV, AVI) to raw H.264 data (.264 files) or to and from raw YUV data.

Thank you in advance for any help!

Hans Ohlo
28th February 2007, 16:28
if you do this i C/C++ feel free to contribute the code to ffmpegs h264 decoder.

sorry for ot ;)

akupenguin
28th February 2007, 17:10
Sorry, I never found such an overview. My path to learning about H.264 was:
Know a previous format (i.e. read XviD and ffmpeg4 sourcecode).
Read x264 and ffh264 sourcecode.
Read H.264 standard.
Start coding.


@Hans: C only. C++ isn't welcome in ffmpeg.

neuron2
28th February 2007, 17:11
See the AVC resources at the Library at my website:

http://neuron2.net/library/library.html

BraveToaster
28th February 2007, 19:21
@Hans / akupenguin: It will be written in C, but since the code will be optimized for the Cell processor, it will not be easy to contribute to that project. In addition to that, the actual code that I write will become the property of a big company, where I do my Master's thesis. So it won't be easy - but I will definitely consider to contribute when I'm done (and understand all the issues).

@neuron2: Thank you for that website! It looks like a great collection of useful information, and I am sure that it will help me a great deal.

KoD
1st March 2007, 10:35
Have a look at this book: Wiley Publishing - H.264 and MPEG-4 Video Compression. Maybe you can find it at a library. It presents the concepts used in video compression and has a nice presentation on how the algorithms used in mpeg-4 part 10 work. Some math here and there and lots of prose and figures to make you understand the inner workings. Each chapter has references as well. However, it is mostly centered around Simple Profile and barely touches other profiles. But it's very nice to see the explanations on why things were designed the way they are rather than just "read the standards and don't question".

I'd recommend to look for it at a library rather than buy it though as it might not be what you need.

The book has a website too, where you can find some explanations on h264: vcodex (http://www.vcodex.com/).

BraveToaster
2nd March 2007, 11:19
@KoD: Thank you for that reference. In fact, a PDF version of that book is on neuron2's website and I have already looked through it and it already helped me.

Now I was also wondering about tools that could help me, i.e. conversion between different formats (.264 <-> MP4 <-> MOV etc.) or even something that analyzes a H.264 file and prints out detailed information about what encoding methods were used. Does anybody have something to that effect?
Edit: I just found that the Mpeg4IP tools are definitely a good start...

Appu
2nd March 2007, 11:47
StreamEye from Elecard can do a decent analysis of H.264 streams. Available at http://www.elecard.com/products/products-pc/consumer/streameye-tools/