【codecs】编解码标准梳理框架和要点(完善ing)

Date: 2018.11.3


1、前言

    在研读编解码标准时,需要注意不能完全按照标准的思路和角度去理解标准,虽然标准已经将所有技术细节讲述清楚了,但是可能整体的框架和要点并不能完全呈现出来,需要我们自己去组织呈现,并将各个技术要点具体化。

2、编解码标准框架和要点

    梳理标准可以从两个维度进行:

  1. 首先把握整体的框架和要点(基本要素或骨架);
  2. 在上面基础上梳理各个要点的细节(具体化)。

使用上面总-分的方式梳理标准,可以更好的把握标准的框架和细节。

以MPEG-2标准为例进行分析:

(1). 码流组织方式(码流结构)

  • 分层结构(MPEG1/2/4)
  • 单层nal结构(H.264/H.265)
    码流结构其实是定义了如何存放码流数据和一些辅助信息。 头信息可以理解为一些辅助信息。确定码流结构之后,首先需要明确头信息解码中的相关信息。
    在MPEG-2标准中,Sequence_header中包含有码流的帧宽和帧高信息,所以必须要有sequence_header,并且后面紧跟着sequence_extension。并且必须要有Picture_header(包含帧类型),后面紧跟picture_coding_extension。其中gop_header是可选的,sequence_header和picture_header都是必须要有的。
    主线: 预测 + 残差 = 重建

预测过程

(2). 帧内预测

  • 宏块划分方式(确定预测块的大小):区分亮度块大小和色度块大小
  • 预测方式
    • 无像素域预测(MPEG1/2/4)
    • 有像素域预测
      • 相邻块可用性(确定参考块)
      • 预测模式:区分亮度块和色度块的预测模式

(3). 帧间预测

  • 宏块划分方式(确定预测块的大小),区分亮度块大小和色度块大小
  • 预测方式(指示通过MV和参考帧找到参考块,按图索骥)
  • 参考帧或参考场:区分场预测(参考为场)和帧预测(参考为帧)
  • MV运动信息:MV=MVP+MVD
    • 相邻块可用性
    • 运动矢量预测MVP
    • MV计算精度
  • 知识串联:可以采用预测方式为主线将帧内预测中的各个要点串联起来。
    预测方式: 1). 特点:比如Skip模式没有残差,mvd等于0,重构值等于预测值。
    2). 预测方向: 前向、后向、双向
    3). 参考帧
    4). 块划分大小
    5). MV信息

残差解码过程
(4). 熵解码
以VLC(Huffman)为例:

  • 块大小:8x8
  • 区分帧内和帧间的块解码方法
  • 区分DC系数和AC系数解码
  • DC系数解码一般采用差分方法(差分+VLC),即dc = pred(前一个块的dc值或者其他方式获取) + diff(码流中传输)
  • AC系数解码:RLC+VLC方式

(5). 反扫描

  • 块大小:8x8或者4x4
  • 扫描方式:常用zigzag

(6). 反量化

  • 块大小:8x8或4x4 (量化块尺寸与预测块(宏块划分方式)之间关系)
  • 量化参数QP确定:区分亮度块和色度块
    例如0~31(mpeg-2/4),0~55(svac1)。编码句法中必定有句法表示QP(例如mpeg-2中的quantiser_scale)。
  • 反量化后残差系数的取值范围(运算精度)
  • 区分帧内块和帧间块

(7). 反变换

  • 块大小:8x8或4x4 (变换块尺寸与预测块(宏块划分方式)之间关系)
  • 定点化(缩放)
  • 反变换后残差系数的取值范围(计算精度)

THE END!

原文地址:https://www.cnblogs.com/SoaringLee/p/10532100.html