【codecs】編解碼標準梳理框架和要點(完善ing)
阿新 • • 發佈:2018-11-20
Date: 2018.11.3
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!