原文链接:http://blog.youkuaiyun.com/u010854339/article/details/8994985
本文首先参考了 ① http://blog.youkuaiyun.com/hevc_cjl/article/details/8183144 ②http://blog.youkuaiyun.com/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所贴出来的:
第一个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
)
√
OK,解释到这里应该算是很清楚了吧?入门级的教程,O(∩_∩)O~
Louis.Wang
2013.5.30