H.266/VVC技术描述_7-熵编码

1、CABAC引擎

  CABAC是一种算术编码,依靠概率区间进行编码,对于二进制算术编码,只需要指定两个概率。HEVC中定义了大概率符号MPS和小概率符号LPS,根据情况分别代指0和1。假设给定区间R,将RLPS定义为下一个符号为LPS的区间,RLPS长度为RPLPS,RMPS长度为R-RLPS。RPLPS的值通过查表获得,R有4个值,P有64个值,所以需要一个64x4x8比特的表。通过当前概率值和符号种类(LPS或MPS)计算新的概率值。
  VVC中的CABAC设计了依赖于QP的初始化方法,在slice开始时使用。概率模型的初始状态preCtxState= Clip3(1, 127, ((m × (QP – 32)) >> 4) + n),其中m = slopeIdx × 5 – 45,n = (offsetIdx << 3) +7,slopeIdx和offsetIdx分别用3比特表示。
  preCtxState线性表示概率,在输入编码引擎之前,只需要直接移位得到概率索引pStateIdx,可以节省对数线性映射和256byte的表。

2、变换系数级编码

HEVC中使用系数组(CG)进行编码,每个CG含有一个4x4的编码块。VVC中,系数组大小只取决于TU大小,与通道无关,可以使用的CG尺寸为1x16, 2x8, 8x2, 2x4, 4x2和16x1。
CG中的系数根据预定义的扫描顺序进行编码,根据TB区域和色彩通道来限制上下文编码bin的最大数量。例如一个亮度TB,最大的上下文编码bins数量CCB等于TB_zosize1.75, 色度为TB_zosize1.25。TB_zosize表示调零后TB中采样点数量,注意不考虑变换skip模式的残差块中的coded_sub_block_flag。
HEVC中基于信号的统计特性进行残差编码,VVC中对变换系数和变换skip模式系数分别设计了残差编码结构。

你可能感兴趣的:(H.266/VVC,视频编码)