1. 程式人生 > >H264 NALU結構

H264 NALU結構

當前流行的應該還算是h264,接下來中國廣播電視會使用avs,而國際上應該會使用h265(要收專利費)和Google的VP9(開源,無專利費)

一個h264視訊由N組GOP(group of picture)組成,GOP由一幀一幀被編碼的影象組成,一幀編碼影象由一個片(slice)或多個片組成,一個片由一個或多個巨集塊(MB,macroblock)組成。對於h264來說,巨集塊大小固定為16*16(16*16的Y+8*8的Cb+8*8的Cr);

//h265的巨集塊大小則是根據影象資訊由8*8到64*64變化;

H264結構上可以分為:

VCL (video codec layer)        視訊編碼層

NAL (network abstractionlayer)網路提取層

其主要優勢是兼具良好的視訊壓縮比和網路親和性;

H264編碼過程中有三種不同的資料形式:

SODB: 資料位元串,及VCL資料;

RBSP: 原始位元組序列載荷,由SODB後面新增結尾bit,1bit的1,加若干bit的0,加0是為了位元組對齊;

EBSP: 擴充套件位元組序列載荷,由RBSP基礎上新增仿校驗位元組(0x03);(Annexb封裝方式)

H264在網路上傳輸的結構為NALU,即NAL unit,其結構為:NAL頭+RBSP;實際傳輸的資料格式如下:

NALU header

RBSP

NALU header

RBSP

NALU header

RBSP

NALU頭的結構(1byte):

Forbidden_bit(1bit) + nal_reference_bit(2bit)+ nal_unit_type(5bit)

結構圖示例:

Forbidden_bit(1bit)

Nal_refference_bit(2bit)

Nal_unit_type(5bit)

1、  forbidden_bit 禁止位,初始為0,當網路發現NAL單元由bit錯誤時,可設定該bit為1,以方便糾錯或丟掉該單元;

2、  nal_reference_bit nal重要性,標誌該nal單元的重要性,值越大,越重要,解碼器在解碼效能不夠時會丟掉重要性為0的NAL單元;

3、  nal_unit_type NALU RBSP部分的資料型別

NALU列表:

nal_unit_type

NAL型別

nal_reference_bit

0

未使用

0

1

非IDR片

此片屬於參考幀,則不等於0;不屬於參考幀,則等於0;

2

片資料A分割槽

同上

3

片資料B分割槽

同上

4

片資料C分割槽

同上

5

IDR影象的片

5

6

補充增強資訊單元(SEI)

非0

7

序列引數集

非0

8

影象引數集

0

9

分界符

0

10

序列結束

0

11

碼流結束

0

12

填充

0

13~23

保留

0

24~31

不保留

0