1. 程式人生 > >【codecs】編解碼標準梳理框架和要點(完善ing)

【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!