H264/AVC-NALU解析
生活随笔
收集整理的這篇文章主要介紹了
H264/AVC-NALU解析
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
簡介
NALU是H264碼流的基本單元。它的起始碼是0x000001或0x00000001,可以根據起始碼查找NALU元素。如下圖所示,
H264中NALU由header和body兩部分構成。
NALU header
- forbidden_zero_bit,必須為0
- nal_ref_idc, 如果nalu_type為slice,表示該slice是否用作參考
- nal_unit_type,表示nalu類型
NALU類型定義如下,一般比較常見的幾種類型是非IDR slice(type=1)、IDR(type=5)、SPS(type=7)、PPS(type=8)
NALU body
Nalu body生成流程如下:
- 視頻編碼生成的比特流稱為SODB(String of Data Bits)。由于SODB可能不是整數字節,因此需要在后面填充數據使其變成整數字節,填充后的比特流稱為RBSP(Raw Byte Sequence Payload)。
SODB生成RBSP過程如下:
- RBSP還不能直接作為NALU Body,因為RBSP中可能含有0x00 00 01,與起始碼沖突,必須先進行沖突避免處理。規則如下:遇到0x000000、0x000001、0x000002、0x000003在兩個00字節后插入一個字節0x03.
0x000000 -> 0x00000300
0x000001 -> 0x00000301
0x000002 -> 0x00000302
0x000003 -> 0x00000303
總結
以上是生活随笔為你收集整理的H264/AVC-NALU解析的全部內容,希望文章能夠幫你解決所遇到的問題。