天天看點

【HEVC學習與研究】30、解碼Coding Unit資料

一個CU結構可以認為是編碼過程中作為實際處理過程的一個單元,标準文檔的7.3.8.5節說明了CU的文法結構,如下圖:

【HEVC學習與研究】30、解碼Coding Unit資料
【HEVC學習與研究】30、解碼Coding Unit資料
【HEVC學習與研究】30、解碼Coding Unit資料

這個結構中,第一個元素cu_transquant_bypass_flag表示是否跳過scaling和變換過程,如果該元素不存在則預設為0。在xDecodeCU函數中,解析該元素的代碼如下:

由于PPS中禁止了TransquantBypassEnableFlag,是以該段代碼被跳過,即預設cu_transquant_bypass_flag為0。

第二個元素cu_skip_flag[ x0 ][ y0 ]判斷該CU在以P或者B模式編碼時,是否使用跳過模式。在I幀編碼時,該元素被跳過。解析該元素的部分代碼:

第三個元素pred_mode_flag隻有在目前slice不是I slice的情況下才會出現。在解碼I幀的資料時将會忽略。

第四個元素part_mode的語義表示目前CU的劃分模式。解析的部分為:

在解析的過程中,若發現目前slice是I slice,則這個文法元素直接被設定為1;反之,則解碼根據算數解碼的結果設定為1或0;

第五個元素pcm_flag表示目前CU中所包含的是pcm_sample( )還是transform_tree( )。調試執行個體中pcm_flag不存在,是以預設不使用pcm_sample( ),同時也不包含pcm_alignment_zero_bit字段。

prev_intra_luma_pred_flag、mpm_idx和rem_intra_luma_pred_mode等元素都表示了亮度分量的幀内預測模式資訊。intra_chroma_pred_mode呢顧名思義儲存了色度分量的幀内預測資訊。具體的解析方法在研究幀内預測時詳述。

rqt_root_cbf元素辨別了目前CU中是否包含transform_tree( )部分,若該元素取值為1,則目前CU中包含transform_tree( ),否則就沒有transform_tree( )。在該元素未出現的情況下,此值預設為1。

繼續閱讀