zoukankan      html  css  js  c++  java
  • H.264---CAVLC---基础篇

    转自:https://blog.csdn.net/jubincn/article/details/6948334

    CAVLC(Context Adaptive VariableLength Coding)是在H.264/MPEG-4AVC中使用的熵编码方式。在H.264中,CAVLC以zig-zag顺序用于对变换后的残差块进行编码。CAVLC是CABAC的替代品,虽然其压缩效率不如CABAC,但CAVLC实现简单,并且在所有的H.264profile中都支持。

    CAVLC的编码过程如下:

    1、计算非零系数(TotalCoeffs)和拖尾系数(TrailingOnes)的数目。

    拖尾系数指值为+1/-1的系数,最大数目为3。如果超过3个,那么只有最后三个被视为拖尾系数。拖尾系数的数目被赋值到变量TrailingOnes。
    非零系数包括所有的拖尾系数,其数目被赋值到变量TotalCoeffs)。
    2、计算nC(numberCurrent,当前块值)。

    nC值由左边块的非零系数nA和上面块非零系数nB来确定,计算公式为:nC=round((nA+nB)/2);若nA存在nB不存在,则nC=nA;若nA不存在而nB存在,则nC=nB;若nA和nB都不存在,则nC=0。
    nC值用于选择VLC编码表,如下图所示。这里体现了上下文相关(contextadaptive)的特性,例如当nC值较小即周围块的非零系数较少时,就会选择比较短的码,从而实现了数据压缩。

    3、查表获得coff_token的编码。

    根据之前编码和计算过程所得的变量TotalCoeffs、TrailingOnes和nC值可以查H.264标准附录CAVLC码表,即可得出coeff_token编码序列。
    4、编码每个拖尾系数的符号,按zig-zag的逆序进行编码。

    每个符号用1个bit位来表示,0表示“+”,1表示“—”。
    当拖尾系数超过三个时只有最后三个被认定为拖尾系数,引词编码顺序为从后向前编码。
    5、编码除拖尾系数之外非零系数的level(Levels)。

    每个非零系数的level包括sign和magnitude,扫描顺序是逆zig-zag序。
    level的编码由前缀(level_prefix)和后缀(level_suffix)组成。前缀的长度在0到6之间,后缀的长度则可通过下面的步骤来确定:
    将后缀初始化为0。(若非零系数的总数超过10且拖尾系数不到3,则初始化为1)。
    编码频率最高(即按扫描序最后)的除拖尾系数之外的非零系数。
    若这个系数的magnitude超过某个门槛值(threshold),则增加后缀的长度。下表是门槛值的列表:
    6、编码最后一个非零系数之前0的个数(totalZeos)。

    TotalZeros指的是在最后一个非零系数前零的数目,此非零系数指的是按照正向扫描的最后一个非零系数
    根据TotalCoeffs值,H.264标准共提供了25个变长表格供查找,其中编码亮度数据时有15个表格供查找,编码色度DC2×2块(4:2:0格式)有3个表格、编码色度DC2×4块(4:2:2格式)有7个表格。
    7、编码每个系数前面0的数目(run_before)。

    扫描顺序为zig-zag的逆序。
    若∑[run_before]== total_zeros,则不需再计算run_before
    扫描序中的最后一个元素不需要计算run_before
    每个run_before的VLC编码取决于run_before自身及未编码的0的个数ZerosLeft。例如若ZerosLeft== 2,那么run_before只可能是0,1或2,因此使用两个bit即可表示。

  • 相关阅读:
    Software Solutions CACHE COHERENCE AND THE MESI PROTOCOL
    CACHE COHERENCE AND THE MESI PROTOCOL
    Multiprocessor Operating System Design Considerations SYMMETRIC MULTIPROCESSORS
    Organization SYMMETRIC MULTIPROCESSORS
    PARALLEL PROCESSING
    1分钟内发送差评邮件
    Secure Digital
    SYMMETRIC MULTIPROCESSORS
    A Taxonomy of Parallel Processor Architectures
    parallelism
  • 原文地址:https://www.cnblogs.com/qing1991/p/10105350.html
Copyright © 2011-2022 走看看