【HEVC簡介】High Level Syntax


HEVC.pdf
參考文獻:見《High Efficiency Video Coding (HEVC)》High Level Syntax章節
《HEVC標准介紹、HEVC幀間預測論文筆記》系列博客,目錄見:http://www.cnblogs.com/DwyaneTalk/p/5711333.html

 NAL

          NAL:Network Abstract Layer,網絡抽象層,編碼后的bitstream就是由一個個NAL組成。NAL由一個2 Bytes的NAL header和NAL payload data兩部分組成。NAL分為VCL(video coding layer) NAL和non-VCL NAL兩類,其中VCL NAL包含一個picture的數據,而non-VCL NAL包含與多個picture相關的控制信息。
         slice、segment:編碼過程中,視頻分為GOP(group of picture),對於每個picture,分成彼此獨立的slice(不同slice之間,編碼相互獨立,不存在相互依賴的關系)。每個slice可以分為一個或多個slice segment,slice segment由header(包含control information)和coded sample,其中slice內第一個segment header為slice header,包含整個slice的control information,之后的slice segment依賴前面的slice segment。
         access unit:一般是以picture為單位進行訪問的點。

         NAL header(16 bits):如上圖,第一bit‘F’固定為0,6-bits NALType 確定NAL的類型,其中VCL NAL和non-VCL NAL各有32類。LayerID表示NAL所在的Access unit所屬的層,該字段是為了HEVC的繼續擴展設置。TID確定了NAL所在的unit的時域上的層次,如下圖:對於a、b而言,虛線下TID都是0,虛線上TID都是1。同一picture內的NAL,TID字段內容相同,作用:TID小的NAL不能依賴TID大的NAL,還可用於控制視頻選擇部分幀播放。

         decoding order VS output order:decoding order就是編解碼順序,也是bitstream中的順序。output order是視頻輸出播放的順序,由POC(picture output count)指定,且每個CVS(coded video sequence)的POC是相互獨立的。
 
VCL NAL
        
        NAL Type:(如上表2.1)同一個access unit的picture中所有的VCL NAL有相同的NAL Type。對於VCL NAL,包括IRAP(intra random access point,6種)、leading pictures(4種)和trailing pictures(6種)三類和其他16個保留類型。
         IRAP:是指使用幀內編碼,不參考其他圖像。所以IRAP一定是TID為0,編碼方式為intra,但是編碼方式為intra不一定是IRAP。IRAP解碼時不需要依靠其他參考幀,所以在視頻隨機訪問、頻道切換、視頻編輯等操作時,有重要作用。

         Leading pictures VS Trailing pictures:Leading pictures(RASL和RADL) 和 Trailing pictures(TSA、STSA和TRAIL)都是相對於decoding順序上在前面的一個IRAP,如上圖,B2-4和B6-8、P5就associated with I1。Leading pictures是指decoding order在IRAP之后,而output order在IRAP之前的幀,Trailing pictures是指decoding order和output order都在IRAP之后的幀。要求:Trailing pictures只能參考相關的IRAP和相關於同一個IRAP的Trailing pictures,且對於同一個IRAP,必須按照IRAP、Leading pictures、Trailing pictures的順序進行編解碼。
         TSA:Temporal Sub-layer Access,時域分層編碼,定義了時域分層切換點。TSA幀要滿足TSA幀和其編碼順序上隨后的TSA幀不會參考TSA幀之前的、TID大於等於TSA幀的任何幀,如上圖,P6和P7就是TSA幀。
         STSA:Step-wise Temporal Sub-layer Access,步進時域分層編碼。STSA幀要滿足STSA幀及其編碼順序后面的相同TID的STSA幀不會參考該STSA幀編碼順序前面、有相同TID的幀。如上圖,P2屬於STSA幀。
         TRAIL:Trailing pictures中,除了TSA和STSA之外,其他的都定義為TRAIL幀。
         IDR:Instantaneous Decoding Refresh,即刻解碼刷新幀,解碼時徹底清空解碼緩沖區,更新解碼過程並重新開始一段新的CSV(coding sequence video),因此IDR及其之后的所有幀都不允許參考IDR之前的幀。根據IDR幀是否有可解碼的Leading pictures,IDR可分為IDR_W_RADL和IDR_N_RASL,IDR_W_RADL在解碼順序上有RADL pictures,而IDR_N_RASL幀沒有任何Leading pictures。對於IDR,POC一定是0.
         CRA:Clean Random Access,對於CRA幀,它的Leading pictures幀可以參考CRA幀之前的幀,所以解碼CRA幀時,不會刷新解碼器,也不會重新開始一段新的CSV。對於CRA,POC不一定是0. 
        RADL:Random Access Decodable Leading,RADL幀是IRAP幀的Leading pictures。對於RADL幀,它只能參考關聯的IRAP幀和對應的RADL幀,不能參考關聯的IRAP幀解碼順序前面的幀。
         RASL:Random Access Skipped Leading,RASL幀是CRA幀的Leading pictures。對於RASL幀,它可以參考關聯的CRA幀解碼順序前面幀,因此IDR只能有RADL的Leading pictures,而CRA可以有RADL和RASL的Leading pictures。而且,對於CRA幀,RASL要在RADL之前解碼。
         BLA:Broken Link Access,針對視頻鏈接所定義的IRAP類型,因為CRA類型相對IDR類型有更高的編碼效率,所以視頻序列中更多地使用CRA。但是由於CRA的Leading pictures可以是RASL,所以當從CRA幀開始進行視頻拼接、訪問時,RASL需要參考CRA編碼順序之前的幀,但是這些幀是無法獲得的,所以就定義成BLA幀。遇到BLA幀時,對於其編碼順序后與其關聯的RASL,直接舍棄。與IDR幀類似,BLA幀解碼時從新開始一個新的CSV,但是不同之處在於:BLA並不會把POC設置為0(IDR會),而是設置成BLA header中的值。有三種類型的BLA:BLA_N_LP、BLA_W_RADL和BLA_W_LP,分別代表禁止所有Leading pictures、僅禁止RASL的Leading pictures和RADL、RASL的Leading pictures都允許。
         sub-Layer reference VS sub-layer non-reference:如表2.1,對於Leading 和Trailing,每一個種類都有_R和_N兩種類型,分別表示sub-Layer reference和sub-layer non-reference。sub-Layer non-reference是指不能夠被相同Temporal Layer的幀參考的幀,如上圖中B3-4、B6-8和P1;sub-layer reference是指可以被相同Temporal Layer參考的幀,如上圖B2。這些在對視頻幀進行選擇性丟棄時,可以根據這些幀類型進行判斷決策。
non-VCL NAL
        Non-VCL NAL Type:Non-VCL NAL的種類如上圖,Parameter sets包括VPS、SPS和PPS。
                Delimiters(分隔符)包括AUD_NUT、EOS_NUT、EOB_NUT,其中AUD_NUT用於指示access unit的邊界,所以和access unit內的VCL NAL有相同的TID,是access unit內的第一個NAL。EOS_NUT、EOB_NUT分別表示CVS和bitstream的結束,它們的TID為0,沒有payload,只有2-Type的header。
                Filler Data對解碼過程並沒有任何影響,payload就是由一串'11111111'和1-Type的'10000000'組成,主要用來填充數據以滿足達到一定的碼率。Filler Data要在Access UNIT的第一個VCL NAL之后,並且和access unit有相同的TID。
                SEI:supplemental enhancement informatyion,輔助增強信息,提供可選的解碼支持元數據。在HEVC中,SEI是prefix(SEI必須在Access unit的所有VCL NAL之前)或者suffix(SEI可以在Access unit的VCL NAL之后)的,而且SEI有些是只對當前Access unit有效,有些作用范圍可能是多個Access unit甚至整個SVC。VUI是在SPS中的可選信息,VUI不直接影響解碼過程,但是提供兩個方面的信息:1、解碼圖像的展示信息,包括寬高比、掃描、分時等信息;2、限制解碼端的一些信息,包括tiles、MV、參考圖像等。
        VPS、SPS、PPS:三者的結構和關系如上圖。
                


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM