1.2 句法元素的分層結構
1.2.1 句法元素與變數
編碼器將資料編碼為句法元素然後依次傳送。在解碼器端,通常要將句法元素作求值計算,得出一些中間資料,這些中間資料就是h.264定義的變數。
圖1 從句法元素解出變數
pic_width_in_mbs_minus1 是解碼器直接從碼流中提取的句法元素,這個句法元素表徵影象的寬度以巨集塊為單位。我們看到,為了提高編碼效率,h.264將影象實際的寬度減去1後在傳送。
picwidthinmbs = pic_width_in_mbs_minus1 + 1
picwidthinsamplesl = picwidthinmbs * 16
picwidthinsamplesc = picwidthinmbs * 8
以上變數picwidthinmbs 表示影象以巨集塊為單位的寬,變數picwidthinsamplesl 、picwidthinsamplesc 分別表示影象的亮度、色度分量以畫素為單位的寬。h264定義這些變數是因為在後續句法元素的提取演算法或影象的重建需要用到他們的值。在h264中,句法元素的名稱有小寫字母和一系列的下劃線組成,而變數名稱有大小寫字母組成,中間沒有下劃線。
1.2.2 語法
句法是句法元素的組織結構,二對於乙個結構的描述必然少不了對應的語法,語法提供判斷、迴圈等必要的描述方法。
h.264採用一種類c語法。
(1) 判斷:
if(條件)
else
(2) 迴圈: a)
dowhile(條件)
b)while(條件)
c)
for(初始;條件;求值)
1.2.2 描述子
描述子是從位元流提取句法元素的方法,即句法元素的解碼演算法,每個句法元素都有相對應的描述子。由於h.264編碼的最後一步是熵編碼,所有這裡的描述子大多是熵編碼的解碼演算法。h264定義了如下幾種描述子:
ae(v)
基於上下文自適應的二進位制算術熵編碼;
b(8)
讀進連續的8個位元;
ce(v)
基於上下文自適應的可變長熵編碼;
f(n)
讀進連續的n個位元;
i(n)/i(v)
讀進連續的若干位元,並把他們解釋為有符號整數;
me(v)
對映指數golomb熵編碼;
se(v)
有符號指數golomb熵編碼;
te(v)
截斷指數golomb熵編碼;
u(n)/u(v)
讀進連續的若干位元,並將它們解釋為無符號整數;
ue(v)
無符號指數golomb熵編碼。
我們看到,描述子都在括號中帶有乙個引數,這個引數表示需要提取的位元數。
當引數是n時,表明呼叫這個描述子的時候回指明n的值,也即該句法元素是定長編碼。
當引數是v時,對應的句法元素是變成編碼,這時有兩種情況:
i(v)和u(v)兩個描述子的v由以前的句法元素指定,也就是說在前面會有句法元素指定當前句法元素的位元長度;陳列這兩個描述子外,其他描述子都是熵編碼,他們的解碼算術本身能夠確定當前句法元素的位元長度。
H264句法和語法總結(二)NAL層語法
如下圖 2 如何判斷幀型別 是影象參考幀還是i p幀等 nalu型別是我們判斷幀型別的利器,從官方文件中得出如下圖 我們還是接著看最上面圖的碼流對應的資料來層層分析,以00 00 00 01分割之後的下乙個位元組就是nalu型別,將其轉為二進位制資料後,解讀順序為從左往右算,如下 長度 1byte ...
H 264句法和語法總結(五)片頭句法
slice header if nal unit type 5 idr pic id idr 影象的標識。不同的 idr 影象有不同的 idr pic id 值。值得注意的是,idr 影象有不等價於 i 影象,只有在作為 idr 影象的 i 幀才有這個句法元素,在場模式下,idr 幀的兩個場有相同的...
H 264編碼技術 二
3.32 complementary field pair 互補場對 互補的參考場對或互補的非參考場對的總稱。3.33 complementary non reference field pair 互補的非參考場對 兩個位於解碼順序上相繼的兩個訪問單元中非參考場,作為兩個具有相反的奇偶性編碼場,並且...