该类用一个TCoeff m_aaiLevel[24][16]这样的数组来存放MB解码后的残差变换系数,先对残差系数进行scale(即反量化)操作,结果仍然存放在该数组,然后分别对里面的Y、U、V分量的变换系数进行IDCT变换,反变换后的空间域的像素一般存放在YuvMbBuffer的对象中。下面介绍m_aaiLevel[24][16]是如何存放Y、U、V的变换系数的。
对于DCT变换,Y值可能有两种情况4*4和8*8,U和V只有一种4*4变换的情况。
先看Y值为4*4变换的情况。数组m_aaiLevel从第0行到15行的每一行的16个值存放Y值的一组4*4块的16个数据,16到19行的每行存放U值的一组4*4块的16个数据,从20行到23行每行存放V值一组4*4的16个数组。
对于Y值,还有一种8*8DCT变换的情况,如果是该变换,从第0行到15行,每4行存放一组8*8块的64个数据。