HM中经常看到uiAbsPartIdx这个变量,之前对这个变量一直不是太理解,前段时间看HM代码又深入理解了一下。
Z-Order
Z字形扫描顺序在编码中经常用到,如下图是CTU划分成CU后的Z字形编码顺序,CU按此顺序逐个进行编码。

但是CU在CTU中的index却不是简单等于这个编码顺序,因为不确定一个CTU会划分成多少个CU,只是知道编码顺序并不能确定CU的位置。
因为编码过程中最小的单元是4×4大小,所以可以将CTU划分成若干个4×4大小的块,进而确定CU的位置,这也是uiAbsPartIdx变量的作用。
CU的Z-index
我们默认CTU大小是64×64,那么就可以划分成256个4×4大小的块。将这256个块按Z字形顺序编号,得到其各自的Z-Order。如下图中每个小方块大小为4×4,红线代表Z字形扫描的顺序。

对应的每个4×4单元的Z-index为:

而一个CU的Zorder则是以当前CU左上方的4×4单元的Z-index表示,也就是我们经常看到的变量uiAbsPartIdx存储的值。
相关接口
CU可以通过getZorderIdxInCtu()函数来得到其在CTU中的Zorder。该函数定义在TComDataCU

最低0.47元/天 解锁文章
2万+

被折叠的 条评论
为什么被折叠?



