编解码技术:H264 - CAVLC
CAVLC(Context-based Adaptive Variable-Length Code)
:基于上下文的可变长度编码,是 H.264
中进行 4x4
像素块进行熵编码的方法,基本 (baseline) 档次中只能使用 CAVLC
,只有主要 (main) 档次和扩展 (extern) 档次才能使用 CABAC
。
CLBAC 编码详见:Post not found: 编解码技术:H264 - CABAC
CAVLC 的基本原理
在 H.264
的 CAVLC
中,通过根据已编码句法元素的情况动态调整编码中使用的码表,取得了极高的压缩比。
CAVLC
用于亮度和色度残差数据的编码。残差经过变换量化后的数据表现出如下特性:4*4
块数据经过预测、变换、量化后,非零系数主要集中在低频部分,而高频系数大部分是零;量化后的数据经过zig-zag
扫描,DC
系数附近的非零系数值较大,而高频位置上的非零系数值大部分是 +1
和 -1
;相邻的 4*4
块的非零系数的数目是相关的。CAVLC
充分利用残差经过整数变换、量化后数据的特性进行压缩,进一步减少数据中的冗余信息,为 H.264
卓越的编码效率奠定了基础。
CAVLC 的上下文模型
利用相邻已编码符号所提供的相关性,为所要编码的符号选择合适的上下文模型。利用合适的上下文模型,就可以大大降低符号间的冗余度。在 CAVLC
中上下文模型的选择主要体现在两个方面, 非零系数编码所需表格的选择以及拖尾系数后缀长度的更新,以下有详细的论述。