# [Libav-user] Help : YUV value for a macroblock in a yuv240p frame

Boris ndjoreboris at gmail.com
Wed Apr 10 12:53:05 EEST 2019

```Le mar. 9 avr. 2019 à 17:44, Simon Brown <simon.k.brown at gmail.com> a écrit :

>
>> 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
>

Hello Simon,

I do like you tell me but data[0][ linesize[0]*(mby*16 + y) + (mbx*16 + x)
] gives me some negatives pixel's values.
Is it normal ?
For exemple data[0][ linesize[0]*(mby*16 + y) + (mbx*16 + x) ] =
-62
-65
-72
My question is to know if it is normal to have negatives pixel's value ( y
= -a; u=-b; v=-c) where a, b and c are integers.

Regards

> _______________________________________________
> Libav-user mailing list
> Libav-user at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/libav-user
>
> To unsubscribe, visit link above, or email
> libav-user-request at ffmpeg.org with subject "unsubscribe".
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://ffmpeg.org/pipermail/libav-user/attachments/20190410/49df0860/attachment.html>
```