H264碼流的NAL起始位元組分析

2021-06-10 08:10:16 字數 1677 閱讀 9219

這是一段h264碼流,00 00 00 01這是對應forbidden_zero_bit的f(1),接著後面的nal_ref_idc的u(2),這個怎麼解呀,有點暈。剛接觸不久,nal_unit_type的u(5),後面的profile_idc的u(8)指的是那幾個,是多少?
問題補充:

nal_ref_idc的u(2)對應67變成前兩位0 1也就是1,nal_unit_type取64接著的5位 10 01 1則組合成19 ,profile_idc的u(8)則是後面的64轉化為十進位制則是100,level_idc則是0d是13,seq_parameter_set_id的ue(v),則指到ac了,這是哥倫布編碼,答案是0,這個是怎麼算出來的?

2010-9-17 18:01

滿意回答

00 00 00 01是start code後面的ox67為 0110 0111

forbidden_zero_bit 是禁止位,應該是第一位即f(1)=0,1為語法有錯誤

nal_ref_idc是參考級別,代表被其它幀參考情況,u(2)= 11 = 3最(0為無參考,詳見規範)

nal_unit_type是該幀的型別,為剩下的5位,u(5)= 0 0111 = 7

目前型別有:

//h264定義的型別 values for nal_unit_type

typedef enum nalutype;

可以看出是nalu_type_sps  即sequence parameter sets

profile_idc的u(8)則是後面的64轉化為十進位制則是100,

66 baseline

77 main

88 extended

100 high (frext)

110 high 10 (frext)

122 high 4:2:2 (frext)

144 high 4:4:4 (frext)

100是high (frext)

「level_idc則是0d是13,seq_parameter_set_id的ue(v),則指到ac了,這是哥倫布編碼,答案是0,這個是怎麼算出來的?「

就不太懂了。互相幫忙吧。

贊同

8向ta求助

回答者: sindana四級

擅長領域: 暫未定製

參加的活動: 暫時沒有參加的活動

提問者對於答案的評價:

還是蠻感謝的,挺詳細的!

以上內容來自鏈結

在收到h264碼流的每個nal資料(buffer指標)時,對於如下**的理解:

if((*(buffer) == 0) && (*(buffer+1) == 0) && (*(buffer+2) == 0) && (*(buffer+3) == 1))
//nal頭的0x00 00 00 01起始碼

else if(*(buffer+4) == pps_frame)  

else if(*(buffer+4) == i_frame)  

else  

if((*(buffer+5) & 0x80) == 0x80)  

}

H 264碼流結構

a 對照 h.263 的碼流結構 h.263 定義的碼流結構是分級結構,共四層。自上而下分別為 影象層 picture layer 塊組層 gob layer 巨集塊層 macroblock layer 和塊層 block layer psctr ptype pquant cpmpsbi trbdb...

H 264碼流結構

a 對照 h.263的碼流結構 h.263定義的碼流結構是分級結構,共四層。自上而下分別為 影象層 picture layer 塊組層 gob layer 巨集塊層 macroblock layer 和塊層 block layer psc tr ptype pquant cpmpsbi trbdbq...

H264碼流分析

sodb 資料位元串 最原始的編碼資料 rbsp 原始位元組序列載荷 在sodb的後面填加了結尾位元 rbsp trailing bits 乙個bit 1 若干位元 0 以便位元組對齊。ebsp 擴充套件位元組序列載荷 在rbsp基礎上填加了仿校驗位元組 0x03 它的原因是 在nalu加到anne...