在Context-Based Adaptive Binary Arithmetic Coding in the H.264/AVC Video Compression Standard文獻中的二值化中有TU與EGK的聯合二值化方案。針對abs_level語法元素的二值化表如下:
由於對指數哥倫布編碼過程的印象一直都類似於下表所示。
因此覺得abs_level值爲16-20時對應的EG0 suffix有誤。查證以後發現H.264中的EGK編碼過程和上表的編碼過程是有區別的。
H.264中的EGK編碼過程如下圖所示:
下面以輸入的句法元素值爲幅度的絕對值abs_level=20,對此使用截斷值S=14,階數k=0的UEG0二值化方案進行舉例。
先編碼前綴部分,按照編碼規則易得二進制序列爲11 1111 1111 1111(14個1)。
再編碼後綴部分,下面按照僞C代碼進行編碼:
按照僞C代碼進行編碼過程:
x = 19 – S = 5。
進行第一次循環:5>1(即1<<0),因此put(1), x=5-1=4, k+1=1;
進行第二次循環:4>2(即1<<1),因此put(1), x=4-2=2, k+1=2;
進行第三次循環:2<4(即1<<2),因此put(0);
至此得到EG0的前綴一元碼與截斷位0。
進行第一次循環:k-1=1,因爲(x>>k)&0x01=(2>>1)&0x01=1,所以put(1);
進行第二次循環:k-1=0,因爲(x>>k)&0x01=(2>>0)&0x01=0,所以put(0);
至此得到EG0的後綴序列10。
可見,最終輸出的二進制序列爲11 1111 1111 1111 11010。
[轉載請註明作者和出處]