• 沒有找到結果。

H.265/HEVC 視訊標準解碼器

第二章 H.265/HEVC 視訊標準

2.5 H.265/HEVC 視訊解碼器

2.5.3 H.265/HEVC 視訊標準解碼器

圖 2.4 為 H.265/HEVC 的解碼系統方塊圖,當解碼端收到編碼端的封包 NALU 位元 流,首先進行 NALU 解碼,判斷 NALU 檔頭形態解碼,解碼完之後如果是 VCL 進入熵 解碼程序(ED),將熵解碼所得的資訊進行反量化(IQ)、反轉換(IT)得到畫面的殘差值,以 及所得到畫框內預測形態(IFP)、運動補償(MC)進行畫面重建,為了保有更佳的視訊品質,

在最後的解碼程序中,將解碼後的重建畫面進行去方塊濾波器(DF)和取樣點適應性補償 (SAO),最後輸出 YUV 格式的視訊資料進行撥放。

本節將對於 H.265/ HEVC 的測試平台 HM10.0 解碼器解碼流程做介紹[1],如圖 2.26 所示。首先將測試影像序列 Test,如圖 2.27 所示,經過 H.265/HEVC 編碼後的檔案 Test.265,如圖 2.28 圖所示,是由 16 進位制顯示的位元流。由於 H.265/HEVC 是以 NALU 進行傳輸的,所以解碼器每次讀取一個 NALU 進行解碼動作,從 2.5.1 小節裡可以得知 每個 NALU 前都有 4 個 byte 或 3 個 byte 組成的起始碼,也可以從圖 2.28 中很明顯得看 出灰色部分的起始碼,當解碼器讀到起始碼後就可以得知接下來的資料為 NALU,再繼 續到下個起始碼就可以得知道這一個 NALU 得長度,而開始解碼。接下來依照圖 2.26 HM 解碼器的解碼流程詳細介紹如下 :

步驟一、判斷是否有 bitstream,有的話讀取 NAL 起始碼再繼續讀到下個起始碼,得知 NALU 長度後將 NALU 讀入,前往步驟二。否則前往步驟十九。

步驟二、進行 NALU 檔頭解碼,判斷 NALU 的形態如表 2.2 所示,前往步驟三。

步驟三、型態是 VPS 則進行 VPS 檔頭訊息解碼及參數設定,結束後返回步驟一,否則 前往步驟四。

步驟四、型態是 SPS 則進行 SPS 檔頭訊息解碼及參數設定,結束後返回步驟一,否則 前往步驟五。

步驟七、從 Slice 檔頭訊息中得知 Slice 中包含幾個 CTU,判斷是否解碼完成 Slice 裡全 部的 CTU,是前往步驟十五,否則前往步驟八。

步驟八、讀取設定 CTU 結構,判斷是否解碼完成 CTU 裡全部的 CU,是前往步驟七,

否則前往步驟九。

步驟九、判斷 CU 的編碼型態是否為 Intra,是前往步驟十,否則前往步驟十一。

步驟十、根據編碼端所決定的 Intra mode 進行解碼,還原出 CU 預測值,前往步驟十 三。

步驟十一、判斷 CU 是否為 Skip mode,是從先前計算解碼分塊重建前往步驟八, 否 則前往步驟十二。

步驟十二、根據編碼端所決定的 Inter mode 進行解碼,解碼出 MV 及 MC 還原出 CU 預測值,前往步驟十三。

步驟十三、將編碼時的差值進行反量化及反轉換(IQ/IT) ,前往步驟十四。

步驟十四、將反量化及反轉換的質和 CU 預測值相加,還原出 CU 前往步驟八。

步驟十五、判斷此 Slice 是否為本畫面就後一個 Slice,是前往步驟十六,否則前往步驟 一讀取下個 NALU。

步驟十六、判斷本畫面是否進行 DF,是進行 DF 後前往步驟十七,否則直接前往步驟 十七。

步驟十七、判斷本畫面是否進行 SAO,是進行 SAO 後前往步驟十八,否則直接前往步 驟十八。

步驟十八、輸出畫面和判斷本畫面是否為最後一張畫面,是前往步驟十九,否則前往步 驟一讀取下個 NALU。

步驟十九、檔案解碼完畢。

Bitstream Read a NAL Start code

Write a decoded picture to buffer

init CTU data structure

Do the motion

Decode motion vectors

圖 2.27、測試影像序列(Test)

圖 2.28、16 進位制顯示 H.265/HEVC 編碼檔案 Test.265

相關文件