1. 程式人生 > >H.264 SODB RBSP EBSP的區別

H.264 SODB RBSP EBSP的區別

ice rtc access 問題 cap 同時 它的 兩種 內部

SODB(String of Data Bits,數據比特串):

最原始,未經過處理的編碼數據


RBSP(Raw Byte Sequence Payload,原始字節序列載荷):

在SODB的後面填加了結尾bit(RBSP trailing bits 一個bit ‘1’)若幹bit ‘0’,以便字節對齊。


EBSP(Encapsulated Byte Sequence Payload, 擴展字節序列載荷):

NALU的起始碼為0x000001或0x00000001(起始碼包括兩種:3 字節(0x000001) 和 4 字節(0x00000001),在 SPS、PPS 和 Access Unit 的第一個 NALU 使用 4 字節起始碼,其余情況均使用 3 字節起始碼。)

同時H264規定,當檢測到0x000000時,也可以表示當前NALU的結束。那這樣就會產生一個問題,就是如果在NALU的內部,出現了0x000001或0x000000時該怎麽辦?

在RBSP基礎上填加了仿校驗字節(0x03)它的原因是:在NALU加到Annexb上時,需要填加每組NALU之前的開始碼StartCodePrefix,如果該NALU對應的slice為一幀的開始則用4位字節表示,0x00000001,否則用3位字節表示0x000001.為了使NALU主體中不包括與開始碼相沖突的,在編碼時,每遇到兩個字節連續為0,就插入一個字節的0x03。解碼時將0x03去掉。也稱為脫殼操作。

關系圖:

技術分享圖片

H.264 SODB RBSP EBSP的區別