将自己看到的对我帮助很大的文章转载于此,方便下次查阅。
原文链接:http://blog.csdn.net/u010854339/article/details/8994985
本文首先参考了 ① http://blog.csdn.net/hevc_cjl/article/details/8183144 ②http://blog.csdn.net/tianzhaixing/article/details/8694105 两位的帖子,过程会引用作者的原图。知识不深,但刚开始自己也迷糊,所以这里贴出来以便以后碰到这方面基础的时候查证。
首先为了数据处理的方便,HEVC以4x4块为最小单位,对每个CU进行分割;同时,为了简化计算,在初始化时定义了地址映射的数组,g_auiRasterToZscan, g_auiZscanToRaster。
g_auiZscanToRaster[z-scan index ] =raster scan index
g_auiRasterToZscan[raster index ] =z-scan index
下图一个小方块代表一个4*4块,这里只是显示了部分64*64区域,我们以此为例去理解Raster与Zscan的对应关系:
oK,那么,我们有:
g_auiZscanToRaster[ 4 ] = 2; g_auiRasterToZscan[ 2 ]=4
g_auiZscanToRaster[ 5 ] = 3; g_auiRasterToZscan[ 10] =6
g_auiZscanToRaster[ 16 ] = 4; .......... g_auiRasterToZscan[ 16] =8 .........
g_auiZscanToRaster[ 5 ] = 3; g_auiRasterToZscan[ 10] =6
g_auiZscanToRaster[ 16 ] = 4; .......... g_auiRasterToZscan[ 16] =8 .........
******************************************************************************************************************************************
回到HM代码中,正如 作者hevc_cjl所贴出来的:(原作者第二图ZscanToRaster第四行第1,2两个数应该为8,9,此处改正过来了)
第一个RasterToZscan我们绝大多数都能理解,那么ZscanToRaster的表格数据是怎么回事?
回到概念 g_auiZscanToRaster
[
z-scan index
] =
raster scan index
g_auiZscanToRaster[0] = 0
g_auiZscanToRaster[1] = 1
g_auiZscanToRaster[16] = 4
g_auiZscanToRaster[17] = 5
g_auiZscanToRaster[2] = 16
。。。。。。。。。。。
我们看看到底是不是这样子?以第一张表格为准,我们来验证。
g_auiZscanToRaster[16] = 4 Zscan的16对应于raster的4位置(即
g_auiRasterToZscan[ 4 ]=16
)
√
g_auiZscanToRaster[17] = 5
Zscan的17对应于raster的5位置
(即
g_auiRasterToZscan[ 5 ]=17
)
√
周
20130821