最近一年都在做一個(gè)h264工程的移植,由于只是做的移植,對(duì)h264理解的還不夠深入。加之自己的畢業(yè)選題是關(guān)于h265的,因此覺得很有必要總結(jié)下h264,一方面加深對(duì)該標(biāo)準(zhǔn)的理解,另一方面為攻克h265做好前期準(zhǔn)備。 h264功能包含兩層: VCL:Video Coding Layer, 視頻編碼層,進(jìn)行視頻編碼,產(chǎn)生編碼數(shù)據(jù) NAL:Network Abstraction Layer,網(wǎng)絡(luò)提取層,用于編碼數(shù)據(jù)的傳輸及存儲(chǔ) 對(duì)于NAL層: h264的碼流是由一個(gè)個(gè)NALU(Network Abstraction Layer Units, 網(wǎng)絡(luò)抽取層單元)組成的,在每個(gè)NALU前有起始碼(只有當(dāng)該NALU所包含的編碼數(shù)據(jù)不是一幀的開頭時(shí),起始碼為0x000001,其余情況為0x00000001)。 對(duì)于每個(gè)NALU,其組成如下: RBSP:Raw Byte Sequence Payload, 原始數(shù)據(jù)字節(jié)流 RBSP有多中類型,如: SPS:seq_parameter_set, 序列參數(shù)集 PPS:pic_parameter_set, 序列圖像集 SODB:String Of Data Bits,原始數(shù)據(jù)比特流 注: 1,SPS,PPS為編碼數(shù)據(jù)的解碼提供必備信息,SODB包含的則是編碼數(shù)據(jù)。還有其他類型的NALU,如SEI等,在這為簡(jiǎn)化理解就不列出并討論了,。 2,以上類型包長(zhǎng)度不一定是8的倍數(shù),故需添加拖尾數(shù)據(jù)(trailing)補(bǔ)齊,構(gòu)成RBSP。 SODB的來源即是VCL層,VCL層是h264的重點(diǎn)與難點(diǎn),而且NAL層的很多信息也來自VCL層,因此我們將在接下來的《h264之路》中首先研究VCL層的相關(guān)內(nèi)容。
|
|