>
>
> Thanks,
> If I understand what you said, I have to proccess like this :
>
> //Declaration of yuv arrays
> uint16_t yval[mb_height * mb_width][256];
> uint16_t uval[mb_height * mb_width][256];
> uint16_t vval[mb_height * mb_width][256];
>
> for(int mby=0; mby<mb_height; mby++)
> {
> for(int mbx=0; mbx <mb_width ;mbx++)
> {
> //Now for this 16x16 macroblock
> for(int y=0; y<16;y++)
> {
> for(int x=0; x<16;x++)
> {
> yval[mby*mb_width + mbx][y*16+x] =
> data[0][linesize[0]*y*16+x]; or yval[mby*mb_width + mbx][y*16+x] =
> data[0][y*16+x]???
> uval[mby*mb_width + mbx][(y/2)*16+x/2] =
> data[1][linesize[1]*(y/2)*16+x/2];
> uval[mby*mb_width + mbx][(y/2)*16+x/2] =
> data[2][linesize[2]*(y/2)*16+x/2];
> //Setting of Yuv arrays
>
> }
> }
> //Let's go to an other macroblock
> }
> }
>
> Regards
>
>>
>> Not quite - the data in data[0] is arranged by pixels, so your coordinate
into that array must include all the pixels, not just the current
macroblock. So you need:
yval[mby*mb_width + mbx][y*16+x] = data[0][ linesize[0]*(mby*16 + y) +
(mbx*16 + x) ]
so you skip all lines up to the one you're processing, including all
previous macroblocks and all lines already processed in the current
macroblock using "linesize[0]*(mby*16 + y)" and then all the pixels in the
current line up to the macroblock you're interested in, and any pixels
already processed in that macroblock with "mbx*16 + x".
I hope that makes sense.
Regards,
Simon
_______________________________________________
Libav-user mailing list
[email protected]
https://ffmpeg.org/mailman/listinfo/libav-user
To unsubscribe, visit link above, or email
[email protected] with subject "unsubscribe".