基于上下文自适应的可变长编码(CAVLC)

时间:2022-04-19 06:01:55




1、TotalCoeffs(非零系数的数目)、TrailingOnes(拖尾系数的数目)


非零系数的数目范围从0到16,拖尾系数数目的范围从0到3,如果±1的个数大于3,只有最后3个被视为拖尾系数,其余被视为普通的非零系数。对非零系数数目和拖尾系数数目的编码通过查表得到,共有4个变长表格和1个定长表格可供选择。

定长表格的码字是6bit,高4bit表示非零系数个数(TotalCoeffs),最低两位表示拖尾系数的个数(TrailingOnes)。

表格的选择根据变量NC(Number Current,当前快值)的值来选择,除了色度的直流系数外,其他系数类型的NC值是根据当前块左边 4*4 块的非零系数数目(NA)和当前块上面 4*4 块的非零系数数目(NB)求得的。当输入的系数是色度的直流系数时,NC = -1。求NC的过程为:X 表示与当前块同属于一个片并可用。

非零系数数目和拖尾系数数目的编码表格为:


基于上下文自适应的可变长编码(CAVLC)


基于上下文自适应的可变长编码(CAVLC)



CAVLC编码过程:


(1)4x4块数据:

基于上下文自适应的可变长编码(CAVLC)


(2)部分系数初始化:

数据重排序:0 0 5 32 -1 0 0 01 .......

非零系数的数目(TotalCoeffs)= 5          (5,3,2,-1,1)

拖尾系数的数目(TrailingOnes)= 2        (1,-1)

非零系数前的数目(Total_zeros)= 5        (3+2=5)

变量系数NC = 3


(3)编码过程:

基于上下文自适应的可变长编码(CAVLC)