H.265/HEVC視頻編碼標準總結

目錄

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


1.HEVC的Profiles(檔次),Levels(級別),Tier(層)

1.1 HEVC的Profiles(檔次)

Profile(檔次)規定了編碼器可採用哪些編碼工具(coding tools)或算法,共三個檔次如下:
 (1)"Main" profile: 每像素8bit的位深,是最常見的檔次。
 (2)"Main Still Picture" profile:
       支持單個靜態圖像,按照Main檔次的規定進行編碼,Bitstream contains only a single(intra) picture
Includes all(intra) coding features of Main profile
 (3)"Main 10" profile:
       除了8bit位深,也可擴展支持10bit位深。支持Main 10的解碼器必須同時可解碼Main檔次的碼流。

HEVC Profile

1.2 HEVC Levels(級別)和Tiers(層)

level(級別)是對解碼端的負載和內存佔用影響較大的一系列編碼約束的組合,如最大采樣率,最大圖像尺寸,最小壓縮率,最大比特率,DPB容量和CPB(解碼緩衝區)大小等。

Tier()是爲了不同應用需要的最高比特率的不同做出區分,有main和high兩種。

標準規定HEVC有13個level(級別)和2個Tier(層):

HEVC Levels and Tiers

 2.HEVC的分層結構

2.1 分層結構概述

與H.264/AVC類似,H.265/HEVC採用了視頻編碼層(Video Code Layer,VCL)和網絡適配層(Network Abstract Layer,NAL),VCL層包含了視頻數據的內容,NAL主要負責對視頻壓縮後的數據進行劃分和封裝,保證數據能在不同的網絡環境中傳輸。通過NAL,視頻壓縮數據將被根據其內容特性分割成具有不同特性的NAL單元(NAL Unit,NALU),並對NALU的內容特性進行標識。因此,傳輸網絡根據NALU的標識就可以優化視頻傳輸的性能,而不需再分析視頻的內容特徵。NALU可以直接作爲載體進行傳輸,而由於不同網絡支持的最大傳輸單元(Maximum Transmission Unit,MTU)是不一樣的,因此存在一個網絡分組包含一個或者多個NALU,或者多個網絡分組包含一個NALU。

H.264 Layer
Caption

上圖中的Network Abstraction Layer屬於其他協議定義的內容。VCL可認爲是視頻編碼後的裸碼流,NAL是將VCL裸碼流進行打包後進行網絡傳輸的碼流。

NAL in network
Bitstream是有NAL units組成

2.2 VCL

VCL採用了把圖片內靜態壓縮、圖片間的動態壓縮、2D變換,以及碼流層的熵壓縮等壓縮技術組合在一起的混合編碼技術,其編碼框架如下圖所示:

hevc encoder
典型的HEVC編碼器結構

和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

2.2 NAL 

HEVC碼流是由一系列NAL unit(NALU)組成,每個NAL包含整數字節的數據,頭兩個字節爲NAL unit Header(1 byte in H.264),剩餘的爲負載數據(原始字節序列負荷RBSP)。不同的NAL單元分爲VCL NAL和non VCL NAL單元,前者攜帶編碼過的圖像數據,後者包含多幀共享的控制參數信息。

HEVC UAL Structure
HEVC NAL 結構​​​​​

2.2.1 NAL unit 頭包含的信息:

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

2.2.2 VCL-NALU和non VCL-NALU具體類型如下:

NAL Type
NAL 類型

2.2.3 NALU Payload

  • NALU負載長度爲整數字節,承載視頻壓縮後的原始字節序列載荷(Raw Byte Sequence Payload,RBSP)。
  • RBSP是對視頻編碼後的原始比特流片段SODB(STring OF Data Bits)進行添加尾部(添加結尾比特1,以湊足整字節)的包裝。
  • RBSP可以包含一個SS的壓縮數據,VPS、SPS、PPS、補充增強信息等,也可以爲定界、序列結束、比特流結束、填充數據等。
  • 在字節流環境中,如果NALU對應的Slice爲一幀的開始,則其開始碼爲0x00000001,若對應的Slice不是一幀的開始,則爲0x000001。
  • 爲避免NALU載荷中的字節流片段與的NALU的起始碼及結束碼發生衝突,需要對RBSP字節流做避免衝突處理,經過處理後的RBSP纔可以直接作爲NALU的載荷信息。同時注意到在解碼的時候,這些處理是會被逆處理恢復的。

下面是H.264/AVC的NALU sequence的一個示意圖:

H.264 NALU Sequence
H.264 NALU Sequence

 

 

本博客所有文章均同步發表於www.mx1980.cn/blog

 

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