【H264/AVC 句法和語義詳解】(三):NALU詳解二(EBSP粒督、RBSP與SODB)

本篇隸屬于文集:《H264/AVC 句法和語義詳解》陪竿,查看文集全部文章,請點擊文字鏈接屠橄。
想看最新文章族跛,可以直接關注微信公眾號:金架構

上一篇解析到,我們從h264裸流中锐墙,提取出一個個的NALU礁哄,并且解析出NALU的第一個字節(jié):NALU Header。下面我們就從NALU Header的下一個字節(jié)開始溪北,分析NALU剩余的數(shù)據(jù)部分桐绒,也即NALU的主體部分。

NALU的主體涉及到三個重要的名詞之拨,分別為EBSP茉继、RBSP和SODB。其中EBSP完全等價于NALU主體蚀乔,而且它們?nèi)齻€的結構關系為:

EBSP包含RBSP烁竭,RBSP包含SODB。

其中SODB就是最原始的編碼數(shù)據(jù)乙墙。


1. EBSP和RBSP

上篇我們說颖变,NALU的組成部分為:

NALU = NALU Header + RBSP

其實嚴格來說生均,這個等式是不成立的,因為RBSP并不等于NALU刨去NALU Header腥刹。嚴格來說马胧,NALU的組成部分應為:

NALU = NALU Header + EBSP

其中的EBSP為擴展字節(jié)序列載荷(Encapsulated Byte Sequence Payload),而RBSP為原始字節(jié)序列載荷(Raw Byte Sequence Payload)衔峰。那為什么我們上篇中佩脊,沒有使用2式而使用了1式呢?那是因為垫卤,在h264的文檔中威彰,并沒有EBSP這一名詞出現(xiàn),但是在h264的官方參考軟件JM里穴肘,卻使用了EBSP歇盼。

而且在我們下面的分析中,我們會看到评抚,使用EBSP是很易于理解的豹缀。

1.1 防止競爭

EBSP相較于RBSP,多了防止競爭的一個字節(jié):0x03慨代。

我們知道邢笙,NALU的起始碼為0x000001或0x00000001,同時H264規(guī)定侍匙,當檢測到0x000000時氮惯,也可以表示當前NALU的結束。那這樣就會產(chǎn)生一個問題想暗,就是如果在NALU的內(nèi)部妇汗,出現(xiàn)了0x000001或0x000000時該怎么辦?

所以H264就提出了“防止競爭”這樣一種機制江滨,當編碼器編碼完一個NAL時铛纬,應該檢測NALU內(nèi)部厌均,是否出現(xiàn)如下左側的四個序列唬滑。當檢測到它們存在時,編碼器就在最后一個字節(jié)前棺弊,插入一個新的字節(jié):0x03晶密。

防止競爭插入0x03

圖中0x000000和0x000001前面介紹了,0x000002是作為保留使用模她,而0x000003稻艰,則是為了防止NALU內(nèi)部,原本就有序列為0x000003這樣的數(shù)據(jù)侈净。

這樣一來尊勿,當我們拿到EBSP時僧凤,就需要檢測EBSP內(nèi)是否有序列:0x000003,如果有元扔,則去掉其中的0x03躯保。這樣一來,我們就能得到原始字節(jié)序列載荷:RBSP澎语。

2. RBSP和SODB

得到RBSP之后途事,我們迫切想做的,就是從RBSP中擅羞,提取出原始編碼數(shù)據(jù)SODB(String Of Data Bits)尸变。這就涉及到RBSP與SODB的關系:

RBSP = SODB + RBSP尾部

而且RBSP的尾部,在規(guī)定中有兩種减俏,我們分別介紹召烂。

2.1 RBSP尾部

其中大多數(shù)類型的NALU,使用這種尾部娃承。

RBSP尾部語法 (文檔7.3.2.11)

其中:

rbsp_stop_one_bit 占1個比特位骑晶,值為1

rbsp_alignment_zero_bit 值為0,目的是為了進行字節(jié)對齊草慧,占據(jù)若干比特位

所以RBSP就等于桶蛔,SODB在它的最后一個字節(jié)的最后一個比特后,緊跟值為1的1個比特漫谷,然后增加若干比特的0仔雷,以補齊這個字節(jié)。

2.2 條帶RBSP尾部

另一種尾部舔示,就是當NALU類型為條帶時碟婆,也即nal_unit_type等于1~5時,這時RBSP使用下面這種尾部:

條帶RBSP尾部語法(7.3.2.10)

可以看到惕稻,rbsp_slice_trailing_bits()默認情況下竖共,就是2.1介紹的第一種尾部。只是當entropy_coding_mode_flag值為1俺祠,也即當前采用的熵編碼為CABAC公给,而且more_rbsp_trailing_data()返回為true,也即RBSP中有更多數(shù)據(jù)時蜘渣,添加一個或多個0x0000淌铐。

所以我們拿到RBSP,只需要按照上述語法蔫缸,去掉RBSP的尾部腿准,就可以得到SODB。然后就可以對照對應類型的NALU的句法拾碌,解析出語法元素的值吐葱。

總結上篇和這篇街望,H264的碼流結構如下:

H264碼流結構
3. H264句法元素解析流程

而當我們拿到RBSP或SODB之后,就可以對照各類型的NALU弟跑,去解析它們的語法元素它匕,進而再根據(jù)語法元素,重建圖像窖认。其中解析語法元素的框圖如下:

解析NALU框圖

由圖可見豫柬,解析NALU的各個句法元素并不難,只要根據(jù)h264文檔對應章節(jié)的句法扑浸,并配合相應的編解碼算法解析即可烧给。而相應的編解碼算法如指數(shù)哥倫布編碼、CAVLC喝噪、CABAC础嫡、算術編碼,我們會一步步涉獵酝惧。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末榴鼎,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子晚唇,更是在濱河造成了極大的恐慌巫财,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,430評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件哩陕,死亡現(xiàn)場離奇詭異平项,居然都是意外死亡,警方通過查閱死者的電腦和手機悍及,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評論 3 398
  • 文/潘曉璐 我一進店門闽瓢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人心赶,你說我怎么就攤上這事扣讼。” “怎么了缨叫?”我有些...
    開封第一講書人閱讀 167,834評論 0 360
  • 文/不壞的土叔 我叫張陵椭符,是天一觀的道長。 經(jīng)常有香客問我弯汰,道長艰山,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,543評論 1 296
  • 正文 為了忘掉前任咏闪,我火速辦了婚禮,結果婚禮上摔吏,老公的妹妹穿的比我還像新娘鸽嫂。我一直安慰自己纵装,他們只是感情好,可當我...
    茶點故事閱讀 68,547評論 6 397
  • 文/花漫 我一把揭開白布据某。 她就那樣靜靜地躺著橡娄,像睡著了一般。 火紅的嫁衣襯著肌膚如雪癣籽。 梳的紋絲不亂的頭發(fā)上挽唉,一...
    開封第一講書人閱讀 52,196評論 1 308
  • 那天,我揣著相機與錄音筷狼,去河邊找鬼瓶籽。 笑死,一個胖子當著我的面吹牛埂材,可吹牛的內(nèi)容都是我干的塑顺。 我是一名探鬼主播,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼俏险,長吁一口氣:“原來是場噩夢啊……” “哼严拒!你這毒婦竟也來了?” 一聲冷哼從身側響起竖独,我...
    開封第一講書人閱讀 39,671評論 0 276
  • 序言:老撾萬榮一對情侶失蹤裤唠,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后莹痢,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體巧骚,經(jīng)...
    沈念sama閱讀 46,221評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,303評論 3 340
  • 正文 我和宋清朗相戀三年格二,在試婚紗的時候發(fā)現(xiàn)自己被綠了劈彪。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,444評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡顶猜,死狀恐怖沧奴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情长窄,我是刑警寧澤滔吠,帶...
    沈念sama閱讀 36,134評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站挠日,受9級特大地震影響疮绷,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜嚣潜,卻給世界環(huán)境...
    茶點故事閱讀 41,810評論 3 333
  • 文/蒙蒙 一冬骚、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦只冻、人聲如沸庇麦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽山橄。三九已至,卻和暖如春舍悯,著一層夾襖步出監(jiān)牢的瞬間航棱,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評論 1 272
  • 我被黑心中介騙來泰國打工萌衬, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留饮醇,地道東北人。 一個月前我還...
    沈念sama閱讀 48,837評論 3 376
  • 正文 我出身青樓奄薇,卻偏偏與公主長得像驳阎,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子馁蒂,可洞房花燭夜當晚...
    茶點故事閱讀 45,455評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 本篇隸屬于文集:《H264/AVC 句法和語義詳解》呵晚,查看文集全部文章,請點擊文字鏈接沫屡。想看最新文章饵隙,可以直接關注...
    金架構閱讀 10,091評論 0 17
  • 做這個東西很久了,從去年十二月份開始的沮脖,快5個月了金矛。。勺届。期間因為工作一直斷斷續(xù)續(xù)驶俊,直到最近才有了些進展,也就到此為...
    0_0啊閱讀 12,414評論 1 13
  • ### YUV顏色空間 視頻是由一幀一幀的數(shù)據(jù)連接而成免姿,而一幀視頻數(shù)據(jù)其實就是一張圖片饼酿。 yuv是一種圖片儲存格式...
    天使君閱讀 3,301評論 0 4
  • 視頻壓縮編碼的目標1)保證壓縮比例2)保證恢復的質(zhì)量3)易實現(xiàn),低成本胚膊,可靠性 壓縮的出發(fā)點(可行性)1)時間相關...
    rogerwu1228閱讀 4,173評論 0 11
  • 使用RTP傳輸H264的時候,需要用到sdp協(xié)議描述,其中有兩項:Sequence Parameter Sets ...
    rogerwu1228閱讀 4,236評論 0 8