[Theora-dev] yuv2rgb

lluis lluis at artefacte.org
Thu Dec 9 11:21:20 PST 2004

exactly ;)

this is just what i'm finding.

now it's time for yuv2rgb ... but i think i'm right with the info posted here
thanks very much all...

when i finish my program i send it to the list ... maybe it could be a good
example in the libtheora tree ...

On Thursday 09 December 2004 19:35, you wrote:
> While individual rows are always themselves contiguous in memory, each
> consecutive row is not. The distance between the first pixel of one row
> and the first pixel of the next row is stored in the y_stride field (and
> the uv_stride field for the u and v planes). This distance can be
> negative! And in fact, the way the library is currently written, it
> usually is.
> (The reasons for this are that internally libtheora needs to add padding
> around the image during the decode process, and for simplicity also
> currently stores it from bottom to top instead of top to bottom; by
> specifying the stride, libtheora lets you access the reversed, padded
> image directly without copying it into a more compact form)
> So, better code would be:
>     unsigned char *y_row;
>     unsigned char *y_col;
>     int x,y;
>     int lumi[320][240];
>     y_row = yuv.y;
>     for(y=0;y<240;y++) {
>        y_col = y_row;
>        for(x=0;x<320;x++) {
>           lumi[x][y]=*y_col++;
>        }
>        y_row += yuv.y_stride;
>     }


More information about the Theora-dev mailing list