Decoding a 10bit video file ain't easy...
I own an
HD camera mod that records uncompressed 8bit and 10bit video files directly to a Mac's HDD. The camera company provided software to capture and render the video files. The rendering software never worked correctly with the 10bit files and we were waiting for an updated release. The company was
sold and the rendering software was *not* updated and is now no longer supported.
:(
I wondered how hard it would be to write a Quicktime component under OS X 10.4 to directly read both the 8bit and 10bit files.
I bought some red, green and blue felt from the art store and recorded 8bit and 10bit clips of each color on an overcast day.
Starting with the 8bit files, I used a hex viewer to examine the "red" video file, and saw numbers like this (converted to decimal):
114 31 32 112 29 32 [...]
Well, that was easy. A quick check of the "green" video file confirmed that the byte order of each pixel is stored R G B. And indeed, my codec can now open successfully open an 8bit file. Hooray! But wait...
Using the same hex viewer I peek at the 10bit "red" video file, which was recorded using the same exposure as the 8bit file so I kind of know what numbers to expect, and I get this (again converted to decimal):
212 245 129 137
120 123 44 130 156
32 142 136 71 200
34 [...]
The italics are mine, they are (kinda) the R G B values I'm looking for, I just didn't expect them to show up like that. I've seen examples of how 10bit DPX image files are packed but the pattern I see in my files just doesn't make sense to me.
Do they make sense to anyone else? I really want to use these 10bit files, and if I can figure out the R G B pattern I'll be good to go.
For the record I did email the rendering software's developer asking for a hint. He did not reply.
1. Packed so that every 10 bits is a value; no alignment between bytes and 10 bit values (i.e. the first 10 bits are red, the next 10 green, etc.
2. Zero padded so that the 10 bit chunks align with byte boundaries (i.e. 6 zeros followed by 10 bits).
3. Zero padded the other way (10 bits followed by 6 zeros).
4. Some more complicated encoding....
If you look at the binary you should be able to tell if it's one of the first three possibilities pretty quickly. Maybe posting some of the binary data here would help?
posted by pombe at 11:41 AM on June 30, 2008