<div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div><br>Thanks,</div><div>If I understand what you said, I have to proccess like this :</div><div><br></div><div>//Declaration of yuv arrays</div><div>uint16_t yval[mb_height * mb_width][256]; </div><div>uint16_t uval[mb_height * mb_width][256];</div><div>uint16_t vval[mb_height * mb_width][256]; <br></div><div><br></div><div>for(int mby=0;  mby<mb_height; mby++)</div><div>{</div><div>         for(int mbx=0; mbx <mb_width ;mbx++)</div><div>         {</div><div>             //Now for this 16x16 macroblock</div><div>            for(int y=0; y<16;y++)</div><div>            {</div><div>               for(int x=0; x<16;x++)</div><div>               {</div><div>                 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]???</div><div>                 uval[mby*mb_width + mbx][(y/2)*16+x/2] = data[1][linesize[1]*(y/2)*16+x/2];</div><div>                 uval[mby*mb_width + mbx][(y/2)*16+x/2] = data[2][linesize[2]*(y/2)*16+x/2];</div><div>               //Setting of Yuv arrays</div><div>           </div><div>             }</div><div>}</div><div>//Let's go to  an other macroblock</div><div>}</div><div>} </div><div><br></div><div>Regards</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br></blockquote></div></div></blockquote><div>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:</div><div>yval[mby*mb_width + mbx][y*16+x] = data[0][ linesize[0]*(mby*16 + y) + (mbx*16 + x) ]</div><div>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".</div><div><br></div><div>I hope that makes sense.</div><div><br></div><div>Regards,</div><div>Simon</div></div></div>