目錄:
h.264協議cabac熵編碼學習(一)
h.264協議cabac熵編碼學習(二)
h.264協議cabac熵編碼學習(三)
h.264協議cabac熵編碼學習(四)
h.264協議cabac熵編碼學習(五)
先列出計算ctxidx的公式:
再次說明,若無介紹到,則該語法元素使用式1進行推導,而式1的ctxidxoffset和ctxidxinc可以通過查閱table 9-34獲取。
mb_type是乙個比較複雜的語法元素,其包含的值較多,這裡首先介紹下其值的意義,在介紹如何推導ctxinc。
mb_type的值
該語法元素表示的巨集塊型別。接下來筆者將詳細的介紹下該語法元素的值。
乙個巨集塊可以是i、p、b、skip、pcm這5種型別中的一種。每種型別根據子巨集塊的劃分方式以及**模式,又分別有多種型別。
首先介紹下i塊的型別:
**中,左邊是i塊型別值,右邊是該值二值化後的結果。第乙個i_nxn表示的是繼續進行子巨集塊劃分,可以是4x4和8x8,根據transform_size_8x8_flag進行判定。最後乙個i_pcm表示的是使用pcm模式。
其他值可以總結為i_16x16_a_b_c,其中16x16表示是16x16劃分,而a表示的是16x16的幀內**模式,b表示chroma的cbp(coded_block_pattern),c表示的是luma的cbp。
對於p塊,其型別如下:
對於b塊,其型別如下:
對於p和b塊,其都可以繼續劃分子巨集塊,子巨集塊的型別如下:
其含義與之前介紹的相同。
協議中根據mb_type,還回推導出一些中間變數,這些變數用於協議中其他語法元素值得推導,這裡列出這些中間變數得**。
mb_type的ctxinc推導
使用式1計算ctxidx。
否則,condtermflagn為1
ctxidxinc可通過如下算式計算:ct
xidx
inc=
cond
term
flag
a+co
ndte
rmfl
agb ctx
idxi
nc=c
ondt
ermf
laga
+con
dter
mfla
gb使用式1計算ctxidx。
筆者介紹的都是幀模式的情況,因此re
fidx
zero
flag
n=((
refi
dxlx
[mbp
arti
dxn]
>0)
?0:1
) ref
idxz
erof
lagn
=((r
efid
xlx[
mbpa
rtid
xn]>0)
?0:1
)ref_idx_l0/l1的ctxidxinc的推導還需要利用到變數predmodeequalflagn,該變數的推導過程如下:
否則:condtermflagn的推導過程如下:
否則,condtermflagn為1
ctxidxinc的計算公式如下:ct
xidx
inc=
cond
term
flag
a+2∗
cond
term
flag
b ctx
idxi
nc=c
ondt
ermf
laga
+2∗c
ondt
ermf
lagb
使用式1計算ctxidx。
該語法元素ctxidxinc的推導,需要使用到中間變數predmodeequalflagn,compidx,absmvdcompn。
predmodeequalflagn跟前面的推到方式一致,compidx的推到方式如下:
absmvdcompn的推到方式如下:
否則:
ctxidxinc的計算公式如下:
可以看出ref_idx_l0/1和mvd_l0/1的ctxidxinc推導較為負責,這是因為h.264中p幀和b幀的分塊、**模式較為複雜導致的。通過前人大量的統計,總結出這樣的上下文劃分方式比較有利於壓縮。下一節筆者將介紹殘差的cabac熵編碼。
H264編碼原理
條件 1.yuv格式為yuv420 2.解析度為640 480 3.幀率為15 建議碼流500kbps,通過計算可以得到h264壓縮比約為1 100。gop中幀與幀之間的差別小 有失真壓縮包括幀內壓縮和幀間壓縮,幀內壓縮解決的是空域資料冗餘問題,幀間壓縮解決的是時域資料冗餘的問題。無失真壓縮包括dc...
H264編碼原理
前言 h264是新一代的編碼標準,以高壓縮高質量和支援多種網路的流 傳輸著稱,在編碼方面,我理解的他的理論依據是 參照一段時間內影象的統計結果表明,在相鄰幾幅影象畫面中,一般有差別的畫素只有10 以內的點,亮度差值變化不超過2 而色度差值的變化只有1 以內。所以對於一段變化不大影象畫面,我們可以先編...
h264編碼分析 哥倫布編碼
1 首先h264為什麼選用哥倫布編碼?因為h264協議為了節省bits,沒有規定字段表示資料字段長度 資料字段可以根據自身的實際值,可長可短,這樣可以大程度上的節省bit。2 無符號指數哥倫布編碼如何編碼的?在實際資料前面有幾個0就表示,有效資料位數是多少,理解為長度字段,然後資料數值 數值 1,因...