[theora-dev] YUV Format

Timothy B. Terriberry tterribe at vt.edu
Thu Apr 1 05:00:14 PST 2004



> Heres the list i haev to work from... could someone tell me which of 
> these it is ?

I have no idea if Microsoft has a specific code for it. The data is 
stored in a planar fashion. Video is stored in an 8-bit per channel 
Y'CbCr space. See doc/color.html for a precise specification of the 
color space used. The current library only uses 4:2:0 decimation 
(decimation of the chroma planes by 2 in both the horizontal and 
vertical direction). Each component, Y', Cb, and Cr, are in separate 
buffers, as suggested by the three separate pointers to them in struct 
yuv_buffer.

The horizontal stride in each buffer is always 1. So the contents of a 
single row are always contiguous in memory. The vertical stride in each 
buffer is NOT the width. So separate rows are NOT contiguous in memory. 
The y_stride and uv_stride variables tell you what to add to your 
pointer to get to the next row. The fact that there is only one value 
for the Cb and Cr planes indicates that each separate Cb and Cr buffer 
uses the same memory organization, NOT that they are stored in the same 
buffer. You will note that this value is negative in the buffers 
returned by the current library, indicating that each row after the top 
row actually comes BEFORE the top row in memory. There is no guarantee 
that libtheora will always do this.

Note also that libtheora may overwrite the contents of the buffer the 
next time you decode a frame. If either DirectShow does not have a way 
of describing the buffer layout given above or you need to keep data 
around for longer than a single frame decode cycle, you will need to 
copy the contents of the buffer somewhere else. You can then use 
whatever memory organization suits your fancy.
--- >8 ----
List archives:  http://www.xiph.org/archives/
Ogg project homepage: http://www.xiph.org/ogg/
To unsubscribe from this list, send a message to 'theora-dev-request at xiph.org'
containing only the word 'unsubscribe' in the body.  No subject is needed.
Unsubscribe messages sent to the list will be ignored/filtered.



More information about the Theora-dev mailing list