JM與h264標準中的關鍵字說明

2022-09-18 20:45:10 字數 3208 閱讀 4206

有些亂,先存著,留著看

如何結合h.264標準看jm**》這個web檔案,大家都應該有了吧。不過,那個web文件是「h.264樂園」群中聊天的內容

1、乙個sps後,有若干個pps嗎?

這主要又編碼器決定,但jm**中只有乙個

2、標準中第二欄的c是什麼意思?

請看標準7.2--分類(在表中以c標記)表明了片資料被劃分為三類片資料分割的情況。片資料a類分割包含所有的2類語法元素。片資料b類分割包含所有的3 類語法元素。片資料c類分割包含所有的4類語法元素。其他類語法元素取值的含義未做規定。對於某些語法元素,使用乙個垂直豎線表示其包含兩類語法元素。在這種情況下,該語法元素將使用的分類值將在文字中進一步確定。

3、乙個nalu對應乙個片嗎?

這種說法不太準確,nalu 包括乙個片、sps、pps、sei等等

4、decode_one_frame()包括i、p、b

5、 case nalu_type_slice:

case nalu_type_idr:

case nalu_type_dpa

case nalu_type_dpb:

case nalu_type_dpc

case nalu_type_sei:

case nalu_type_pps

case nalu_type_sps

case nalu_type_aud:

case nalu_type_eoseq:

case nalu_type_eostream:

case nalu_type_fill

答 :進入哪個 case 是由從 nalu 頭里解碼出來的 nalu_type 決定的

6、解碼器中的誤碼隱藏只對丟包有用,丟包之後,包的序號不連續,解碼器一旦檢測到包序號不連續就會將不連續地方的 ei_flag  置 1

7、位元組流格式和rtp格式碼流,具體的不同點有哪些?相關的資料**有?

位元組流格式主要用於檔案儲存,因此在該格式碼流中 nalu 前面只有乙個開始字首,rtp格式碼流因為需要進行網路傳輸, 因此 nalu 前面還有很多輔助資訊

8、rtp格式就是在位元組流前加包頭嗎?

不是,位元組流=開始字首+nalu,而 rtp 中沒有 開始字首

9、rtp中沒有開始字首,為什麼還是要插03?

防止偽起始碼、、rtp完全可以不用起始碼,或許是為了與位元組流格式統一吧

10、nalu是對rbsp的封裝。而rtp之類的是對nalu的封裝。

11、為什麼要分abc片?

——分abc片主要目的是為了對重要程度不同的資料進行不同程度的保護

12、baseline沒有資料分割吧?

baseline只是如何產生rbsp,如何封裝nalu。具體如何傳輸,rtp之類只是一種方式,檔案copy也是一種方式,那一般 baseline最多有多少參考幀?任意個。

13、解碼profile_idc之後解碼器要做什麼工作?比如baseline不支援cabac那麼後面相應的位entropy_coding_mode_flag是不是就不存在了,如果存在,相牴觸怎麼辦?

當然不會執行 cabac 的**,編碼器如果是編碼 baseline ,那麼碼流中自然就不存在與 cabac 相關的語法元素,例如  entropy_coding_mode_flag ,解碼器解碼 sps ,得知碼流是 baseline 後,自然也就不會去呼叫與 cabac 相關的解碼程 序,也就不會出錯了。profile_idc 為 baseline ,active_pps->entropy_coding_mode_flag 就不會為 cabac,,碼流是 否是 baseline 並不是由多少個參考幀決定的

14、jm 進行 c**lc 編碼時候,對於 level = 8 的情況是採用 escape suffix 處理的,我修改**將 level = 8 的情況採用無符號數表示,結果編碼出來的碼流與未修改完全一樣

附:rbsp、sodb、ebsp三者的區別和聯絡!

sodb:最原始的編碼資料,沒有任何附加資料

rbsp:在 sodb 的基礎上加了rbsp_stop_ont_bit(bit 值為 1)並用 0 按位元組補位對齊

ebsp:在 rbsp 的基礎上增加了防止偽起始碼位元組(0x03)

1、1 frame的資料可以分為多個slice.

2、每個slice中的資料,在幀內**只用到自己slice的資料, 與其他slice 資料沒有依賴關係。

3、nal 是用來將編碼的資料進行大包的。 比如,每乙個slice 資料可以放在nal 包中。

4、i frame. 是自己獨立編碼,不依賴於其他frame. 資料。

p frame. 依賴 i frame. 資料。

b frame. 依賴 i frame, p frame. 或其他 b frame. 資料。

乙個frame是可以分割成多個slice來編碼的,而乙個slice編碼之後被打包進乙個nal單元,不過nal單元除了容納slice編碼的碼流外,還可以容納其他資料,比如序列引數集sps。

15、nal、slice與frame意思及相互關係

nal指網路提取層,裡面放一些與網路相關的資訊

slice是片的意思,264中把影象分成一幀(frame)或兩場(field),而幀又可以分成乙個或幾個片(slilce);片由巨集塊(mb)組成。巨集塊是編碼處理的基本單元。

16、nal nal_unit_type中的1(非idr影象的編碼條帶)、2(編碼條帶資料分割塊a)、3(編碼條帶資料分割塊b)、4(編碼條帶資料分割塊c)、 5(idr影象的編碼條帶)種型別與 slice種的三種編碼模式:i_slice、p_slice、b_slice nal nal_unit_type 裡的五種型別,代表接下來資料是表示啥資訊的和具體如何分塊。i_slice、p_slice、b_slice 表示i型別的片、p型別的片,b型別的片.其中i_slice為幀內**模式編碼;p_slice為單向**編碼或幀內模式;b_slice 中為雙向**或幀內模式。

17、還有frame的3種型別:i frame、p frame、 b frame之間有什麼對映關係麼?

i frame、p frame、 b frame關係同 i_slice、p_slice、b_slice,slice和frame區別在問題1中已經講明白。

18、最後,nal nal_unit_type中的6(sei)、7(sps)、8(pps)屬於什麼幀呢?

nal nal_unit_type 為序列引數集(sps)、影象引數集(pps)、增強資訊(sei)不屬於啥幀的概念。表示後面的資料資訊為序列引數集(sps)、影象引數集(pps)、增強資訊(sei)。

H264標準句法表中C的含義理解

下面一段是h264官方中文版中給出的解釋 類別 在表中以c 表示 規定條帶資料可以至多劃分為三種條帶資料類別。條帶資料類別a 包含了類別2的所有語法元素。條帶資料類別b 包含了類別3 的所有語法元素。條帶資料類別c 包含了類別4 的所有語法元素。其他類別值的含義不作規定。某些語法元素需要使用兩個類別...

H264標準句法表中C的含義理解

下面一段是h264官方中文版中給出的解釋 類別 在表中以c 表示 規定條帶資料可以至多劃分為三種條帶資料類別。條帶資料類別a 包含了類別2的所有語法元素。條帶資料類別b 包含了類別3 的所有語法元素。條帶資料類別c 包含了類別4 的所有語法元素。其他類別值的含義不作規定。某些語法元素需要使用兩個類別...

H 264碼流結構及JM8 6中碼流的產生步驟

整理自 h.264碼流結構示意圖 nalu第一位元組包括3個語法結構 forbidden zero bit 1 1bit禁止位,一般為0 nal ref idc 2 2bit 表示該nal單元的重要性,nal unit type 5 5bit 表示nalu型別加起來正好乙個位元組,如下圖所示 對so...