JM解码器阅读笔记之一

 今天看到宏块解码 macroblock.c中的

 int decode_one_macroblock(struct img_par *img,struct inp_par *inp)  其中比较重要的部分是最后的luma decoding 和chroma decoding即亮度块解码和色度块解码

 

其中亮度块解码比较关键的部分:

。。。。

 itrans   (img,ioff,joff,i,j);     

// use DCT transform and make 4x4 block m7 from prediction block mpr DCT反变换输出m7[16][16] 象素
。。。。

 

dec_picture->imgY[j4*BLOCK_SIZE+jj][i4*BLOCK_SIZE+ii]=img->m7[ii][jj];

// contruct picture from 4x4 blocks ,imgY是亮度分量   [j4,i4]是当前块的位置,每次通过m7赋值[4][4]大小的块

。。。。


色度解码关键部分:

if (!smb)
        {
          itrans(img,ioff,joff,2*uv+i,j);
          for(ii=0;ii<4;ii++)
            for(jj=0;jj<4;jj++)
            {
              dec_picture->imgUV[uv][j4+jj][i4+ii]=img->m7[ii][jj]; //dec_picture 的UV分量
            }
        }

你可能感兴趣的:(struct)