[Libav-user] Help : YUV value for a macroblock in a yuv240p frame
Simon Brown
simon.k.brown at gmail.com
Tue Apr 9 16:30:59 EEST 2019
On Tue, 9 Apr 2019 at 14:20, NDJORE BORIS <ndjoreboris at gmail.com> wrote:
> Hello guys,
>
> I try to find pixels value for a given macroblock in a frame.
> What I did is the following :
>
> //for all macroblock in this frame
> for(int mby=0; y<mb_height;y++)
> {
> for(int mbx=0; x<mb_width;x++)
> {
> int xy = mby*mb_stride+mbx;
> //Now for this 16x16 macroblock
> for(int y=0; y<16;y++)
> {
> for(int x=0; x<16;x++)
> {
> //All pixels YUV value for this macroblock
> y = data[0][linesize[0]*y+x];
> u = data[1][linesize[1]*(y/2)+x/2]
> v = data[2][linesize[2]*(y/2)+x/2]
> }
> }
> //Let's in an other macroblock
> }
> }
> The problem is that for all macroblocks, I have the same Y, u and v value.
> That's is true because I only use the same width and height for every
> macroblock.
>
> My question is to know how can I put difference in the above code to find
> pixels yuv value for each macroblock in this frame.
> I need your help, please.
>
> Regards
>
> Without having understood your code fully, you have two loops around the
outside, one for mby and one for mbx, yet they use y<mb_height and y++,
x<mb_width and x++. You then inside these loops have a loop for x and y
also comparing x and y and incrementing x and y. That can't be right!
Your inner assignments should probably be:
y = data[0][linesize[0]*(mby*16)*y+(mbx*16 +x)]
etc.
Regards,
Simon
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://ffmpeg.org/pipermail/libav-user/attachments/20190409/952e5b4a/attachment.html>
More information about the Libav-user
mailing list