H.264图解

http://vod.cs.nthu.edu.tw/~yyma/NTHU_VC_H264/H_264_Technique_Introduction.php

  流程   離散餘弦轉換   量化   運動向量補償   in-loop濾波器   位元率-誤差模組  

熵編碼   畫面內預測   畫面間預測  

 

  流程

  H.264图解_第1张图片

 離散餘弦轉換

整數轉換避免數值誤差

 

 量化

利用所謂 quantization parameter (QP)值來達到純量量化的效果

共有52種QP值

QP值每增加1會增加約12%的位元率

故約增加6個QP會達到兩倍

QSTEP = 2(QP-4)/6

QSTEP就代表位元率的增長

 

 運動向量補償

multiple reference

採用七種不同的macro block大小來做運動向量的估計

H.264图解_第2张图片

 

variable block size

可參考前後5張FRAME

H.264图解_第3张图片

 

fractional pixel 

利用內插法達到1/2,1/4的精準度動作向量估計

H.264图解_第4张图片

 in-loop濾波器

 避免編碼時區塊化的效應

在編碼流程中加入去區塊化濾波器

有別於編碼後再加入的濾波動作

可以達到更有效率的編碼

H.264图解_第5张图片

 位元率-誤差模組

 針對之編碼模式:

INTRA 4X4, INTRA 16X16, INTER 16X16, INTER 16X8, INTER 8X16,

INTER 8X8, INTER 8X4, INTER 4X8, INTER 4X4, SKIP and DIRECT.

利用拉格蘭日乘數法達到最佳位元分配

 H.264图解_第6张图片

 熵編碼

 

利用exp-Golomb code編碼所有的 syntax elements

利用Context-Adaptive Variable Length Coding (CAVLC) 或

Context-Adaptive Binary Arithmetic Coding (CABAC) 編碼

quantized transform coefficients

 

exp-Golomb code 

H.264图解_第7张图片

 

CAVLC

針對非零個數,以及其值和位置獨立作編碼

以例子來作說明

 

7, 6, -2, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 0 ,0 ,0.

第一步 # of nonzero coefficients (N) and Trailing T1s

計算非零值和所謂的 “Trailing T1s

T1s = 2, N = 5,

這兩個數字以組合的事件壓縮,從四個VLC表中,根據相鄰區塊的係數找一個使用

 

第二步 Encoding the value of Coefficients

對非零係數作編碼, T1s只需記錄正負號

非零係數以反序記錄 -26, …

並利用不同的VLC表達到適應式編碼

六個 exp-Golomb code 表可供使用

 

第三步 Sign Information

傳送正負號

T1s使用一個位元表示

其餘係數之正負號則包含在 exp-Golomb codes 之中

 

第四步 TotalZeroes

傳送從最後一個非零數值到開始之間的的零值個數

    TotalZeroes = 3

N=5意味著所有非零值介於 0-11,

有15個表可供選擇來編碼

N=16 表示沒有非零值

 

第五步 RunBefore

    記錄上一步的零值的位置

 

CABAC

H.264图解_第8张图片

第一步 Binarization

Huffman tree

unary, truncated unary, kth order exp-Golomb, and fixed-length codes

第二步 Context modeling

Adaptive probability models

第三步 Binary arithmetic coding: M coder

Table-based BAC

 

 畫面內預測

 在Spatial domain實作

分成以下幾種方式

 

Intra_4×4

有9種預測模式可以選擇

H.264图解_第9张图片

Intra_16×16

適合用於平緩變化的區域

有四種模式

4 prediction modes

Vertical prediction, Horizontal prediction , DC-prediction , and Plane-prediction

對於Chrominance signals部分

因為 大多相當平滑 直接對8X 8採用 Intra_16X16

I_PCM

Bypass prediction and transform coding and, send the values of the encoded samples directly

 

 

 畫面間預測

每張frame都可以參考(包含B slices

兩個往前以及往後的動態向量(list0, list1)

可用權重分配產生最後的動態向量

四種權重模式 [llist0], [list1], [bi-predictive], [direct prediction]或 B_Skip

每一個partition可用不同的模式.

你可能感兴趣的:(list,reference,encoding,h.264)