编解码技术: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.264CAVLC 中,通过根据已编码句法元素的情况动态调整编码中使用的码表,取得了极高的压缩比。

CAVLC 用于亮度和色度残差数据的编码。残差经过变换量化后的数据表现出如下特性:4*4 块数据经过预测、变换、量化后,非零系数主要集中在低频部分,而高频系数大部分是零;量化后的数据经过zig-zag 扫描,DC 系数附近的非零系数值较大,而高频位置上的非零系数值大部分是 +1-1;相邻的 4*4 块的非零系数的数目是相关的。CAVLC 充分利用残差经过整数变换、量化后数据的特性进行压缩,进一步减少数据中的冗余信息,为 H.264 卓越的编码效率奠定了基础。

CAVLC 的上下文模型

利用相邻已编码符号所提供的相关性,为所要编码的符号选择合适的上下文模型。利用合适的上下文模型,就可以大大降低符号间的冗余度。在 CAVLC 中上下文模型的选择主要体现在两个方面, 非零系数编码所需表格的选择以及拖尾系数后缀长度的更新,以下有详细的论述。

CAVLC 的编码过程