目錄
1.HEVC的Profiles(檔次),Levels(級別),Tier(層)
1.1 HEVC的Profiles(檔次)
1.2 HEVC Levels(級別)和Tiers(層)
2.HEVC的分層結構
2.1 分層結構概述
2.2 VCL
2.2 NAL
2.2.1 NAL unit 頭包含的信息:
2.2.2 VCL-NALU和non VCL-NALU具體類型如下:
2.2.3 NALU Payload
Profile(檔次)規(guī)定了編碼器可采用哪些編碼工具(coding tools)或算法,共三個檔次如下:
(1)"Main" profile: 每像素8bit的位深,是最常見的檔次。
(2)"Main Still Picture" profile:
支持單個靜態(tài)圖像,按照Main檔次的規(guī)定進行編碼,Bitstream contains only a single(intra) picture
Includes all(intra) coding features of Main profile
(3)"Main 10" profile:
除了8bit位深,也可擴展支持10bit位深。支持Main 10的解碼器必須同時可解碼Main檔次的碼流。
level(級別)是對解碼端的負載和內(nèi)存占用影響較大的一系列編碼約束的組合,如最大采樣率,最大圖像尺寸,最小壓縮率,最大比特率,DPB容量和CPB(解碼緩沖區(qū))大小等。
Tier(層)是為了不同應用需要的最高比特率的不同做出區(qū)分,有main和high兩種。
標準規(guī)定HEVC有13個level(級別)和2個Tier(層):
與H.264/AVC類似,H.265/HEVC采用了視頻編碼層(Video Code Layer,VCL)和網(wǎng)絡適配層(Network Abstract Layer,NAL),VCL層包含了視頻數(shù)據(jù)的內(nèi)容,NAL主要負責對視頻壓縮后的數(shù)據(jù)進行劃分和封裝,保證數(shù)據(jù)能在不同的網(wǎng)絡環(huán)境中傳輸。通過NAL,視頻壓縮數(shù)據(jù)將被根據(jù)其內(nèi)容特性分割成具有不同特性的NAL單元(NAL Unit,NALU),并對NALU的內(nèi)容特性進行標識。因此,傳輸網(wǎng)絡根據(jù)NALU的標識就可以優(yōu)化視頻傳輸?shù)男阅埽恍柙俜治鲆曨l的內(nèi)容特征。NALU可以直接作為載體進行傳輸,而由于不同網(wǎng)絡支持的最大傳輸單元(Maximum Transmission Unit,MTU)是不一樣的,因此存在一個網(wǎng)絡分組包含一個或者多個NALU,或者多個網(wǎng)絡分組包含一個NALU。
上圖中的Network Abstraction Layer屬于其他協(xié)議定義的內(nèi)容。VCL可認為是視頻編碼后的裸碼流,NAL是將VCL裸碼流進行打包后進行網(wǎng)絡傳輸?shù)拇a流。
VCL采用了把圖片內(nèi)靜態(tài)壓縮、圖片間的動態(tài)壓縮、2D變換,以及碼流層的熵壓縮等壓縮技術組合在一起的混合編碼技術,其編碼框架如下圖所示:
和H.254/AVC相比,H.265/HEVC采用了許多新的編碼方法,如下表所示:
HEVC/H.265 | AVC/H.264 | |
Year Other Name Resolutions | 2013 MPEG-H Up to 8K | 2003 MPEG-4 Part 10 Up to 4K |
Profiles | 3 profiles; 13 levels; 2 tiers | 21 profiles; 17 levels |
Block size | Tree structure 8x8,16x16,32x32,64x64 Square, sym./asym. rect. | Macroblock 16x16(4x4) Square, sym. rect. |
Transforms | Integer-DCT (4x4,8x8,16x16,32x32) Integer-DST (4x4 Intra) | Integer-DCT (4x4,8x8) Hadamard (2x3,4x4 ) |
Intra-prediction | Up to 33 angular modes (+DC+planar mode) | Up to 9 modes |
Motion prediction Motion-copy mode MV precision | Advanced MV prediction (spatial+temp. co-located) Merge, Skip 1/4 pixel 7/8 tap | Spatial mediam +temp. co-located Direct, Skip 1/2 pixel 6-tap + 1/4 pixel bilinear |
In-loop filtering | Deblocking, SAO | deblocking |
Quantization Entropy Coding | URQ CABAC | URQ CAVLC, CABAC |
HEVC碼流是由一系列NAL unit(NALU)組成,每個NAL包含整數(shù)字節(jié)的數(shù)據(jù),頭兩個字節(jié)為NAL unit Header(1 byte in H.264),剩余的為負載數(shù)據(jù)(原始字節(jié)序列負荷RBSP)。不同的NAL單元分為VCL NAL和non VCL NAL單元,前者攜帶編碼過的圖像數(shù)據(jù),后者包含多幀共享的控制參數(shù)信息。
第一bit‘F’為forbidden?zero位,固定為0
6-bits NALType確定NAL的類型,其中VCL NAL和non-VCL NAL各有32類
LayerID表示NAL所在的Access unit所屬的層,該字段是為了HEVC的繼續(xù)擴展設置
TID(temporal identifier),確定了NAL所在的unit的時域上的層次,如下圖:對于a、b而言,虛線下TID都是0,虛線上TID都是1。同一picture內(nèi)的NAL,TID字段內(nèi)容相同,作用:TID小的NAL不能依賴TID大的NAL,還可用于控制視頻選擇部分幀播放。
NALU負載長度為整數(shù)字節(jié),承載視頻壓縮后的原始字節(jié)序列載荷(Raw Byte Sequence Payload,RBSP)。
RBSP是對視頻編碼后的原始比特流片段SODB(STring OF Data Bits)進行添加尾部(添加結尾比特1,以湊足整字節(jié))的包裝。
RBSP可以包含一個SS的壓縮數(shù)據(jù),VPS、SPS、PPS、補充增強信息等,也可以為定界、序列結束、比特流結束、填充數(shù)據(jù)等。
在字節(jié)流環(huán)境中,如果NALU對應的Slice為一幀的開始,則其開始碼為0x00000001,若對應的Slice不是一幀的開始,則為0x000001。
為避免NALU載荷中的字節(jié)流片段與的NALU的起始碼及結束碼發(fā)生沖突,需要對RBSP字節(jié)流做避免沖突處理,經(jīng)過處理后的RBSP才可以直接作為NALU的載荷信息。同時注意到在解碼的時候,這些處理是會被逆處理恢復的。
下面是H.264/AVC的NALU sequence的一個示意圖: