HEVC標準概覽(三)高層語法

概述

HEVC從H.264/AVC的NAL繼承了大量的語法元素。

NAL是負責把那些裝載了視頻的視頻編碼層的數據映射到RTP/IP、ISO MP4、H.222.0/MPEG-2等多種視頻傳輸層上,同時提供處理丟包情況的框架。

本章節不復述NAL單元、參數集、存取單元、碼流格式、包格式等基本概念。

NAL單元根據是否裝載有視頻編碼數據分爲VCL和non-VCL兩類。爲了支持任意點解碼和解碼初始化,HEVC標準中根據不同的視頻種類細分出子類。

下表列舉了HEVC中NAL單元的種類及用途。
這裏寫圖片描述


下面我們介紹幾個HEVC在語法上的新特性

任意點解碼和碼流拼接

  • H.264/AVC中,碼流必須從一個包含關鍵幀IDR單元開始,它必須不依賴NAL流中的前置的包就可以獨立解碼。IDR是封閉GOP(group of pictures)結構的標誌性組成部分。
  • 新的純隨機讀取(CRA)語法定義瞭如何使用處於隨機讀取點(RAP)位置的關鍵幀。
  • 比如說,告訴解碼器從一個臨時有效的位置直接開始解碼,忽略之前的視頻數據,這種做法被稱作開放式的GOP操作
  • 隨機位置讀取的支持對頻道切換、拖動操作和動態流服務是十分關鍵的。
  • 某些解碼順序在CRA幀之後,顯示順序在CRA幀之前的幀可能會參考解碼器buffer中還不存在的幀,於是這些解碼器無法解碼的幀就只能被丟棄。基於這種情況,這些幀被定義爲拖動可跳過的前置幀(RASL)。
  • 不同的碼流之間切換可以通過斷點連接幀(BLA)來拼接。簡單的把需要切換的碼流的RAP幀標記爲BLA放到當前幀的下一個CRA幀的地方,然後傳輸新碼流就可以完成碼流拼接的工作。
  • RAP幀可以是IDR、CRA、BLA幀,CRA和BLA的後面都可能跟隨着RASL幀(BLA的NAL單元的標記可定)。BLA幀之後的RASL幀解碼器必須拋棄,因爲它們可能參考了拼接前源碼流的幀導致無法解碼。
  • 還有一種解碼順序在RAP幀之後,顯示順序在RAP幀之前的幀,叫做拖動可解碼的前置幀(RADL),這種幀不會參考解碼順序在RAP之前的幀。
  • RASL和RADL可以統稱爲前置幀(LP)。
  • 解碼和顯示順序都在RAP幀之後的幀叫做後置幀,它們不可以將LP作爲它們的參考。

臨時分層編碼

  • 類似H.264/AVC的可伸縮編碼擴展(SVC)的功能,HEVC可以在NAL的頭上臨時定一個分級預測的層。這樣就可以只解析到NAL層面就實現可伸縮性。
  • 某些情況下,針對同一個碼流,解碼器可以自主決定臨時解碼層的數量。從低級子層到更高級子層切換的操作可以在臨時子層幀(TSA)和步進臨時子層幀(STSA)完成。
  • TSA點允許切換到比當前子層高的任意子層,STSA只允許切換到只比當前子層高一級的下一層(除非更高的層也包含TSA或者STSA幀)。

擴展參數集

新加入VPS元數據描述包括臨時層級依賴在內的編碼視頻的全部特徵。主要目的是增強在系統層的兼容擴展性。

比如說,對未來可伸縮編碼或者多視角的視頻需要被舊的解碼器解碼時,那麼它就可以方便地忽略那些高級解碼器才需要的碼流擴展信息。


參考幀集和參考幀列表

爲了管理解碼多參考幀,已解碼好的幀被放在解碼幀緩衝區(DPB)中並被詳細標記以供碼流中後續的幀參考。每個片的頭部都會包含一個幀序計數器(POC)以定位那些幀。

保留下來用以參考的幀集合叫做參考幀集合(RPS)。

下圖演示了一小段碼流的POC值、解碼順序和RPS。
這裏寫圖片描述

H.264/AVC的DPB中有兩個幀的列表,分別叫做參考幀列表0參考幀列表1。定位具體幀的索引叫做參考幀索引,如果列表中只有一個幀,則參考幀索引爲0,不在碼流中傳輸。單向預測時,可以從0和1兩個列表中選出一個幀。雙向預測時,則會從兩個列表中各選一幀。

定位RPS和將參考幀列表用於幀間參考的語法比前代H.264/AVC的設計對丟包的兼容性更好,在拖動和其它播放模式下(快進、快退、動態碼流切換等)也能工作地更好。

這項優化的關鍵是讓語法更加明確可展現,避免了之前對解碼器解碼過程中的中間狀態和臨時值的依賴。而且還比H.264/AVC中的語法更加簡化了。

原文:http://www.tuicool.com/articles/YJJFz2

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章