YU420P格式和H264裸碼流的理解

2021-07-24 12:44:32 字數 891 閱讀 4309

最近兩天在忙專案,偶爾學習了yuv420p的格式以及h264裸碼流的相關知識。這兩個之前也了解過,尤其h264的裸碼流,在hi3518e的原始碼中專門研究過。但是不是太徹底,這幾天看雷神(默哀)的部落格,系統的學習了這兩點支援。

yuv420p我的理解是:

假如使用它表示四個點,每個點都需要乙個y分量,每四個y分量需要乙個uv分量。假設寬度為w=2,高度為h=2,那麼四個點需要的空間便是:(w*h)+(w*h)/4+(w*h)/4=(w*h)*3/2。(2*2)*3/2=6byte。而rgb24比較好理解,乙個點用rgb24描述就是r=1byte、g=1byte、b=1byte,也就是需要3byte。而描述四個點就是3*4=12byte。

而人眼對y分量敏感,對uv分量不敏感,所以人眼是區別不出兩者的區別的。所以yuv420的資料量比rgb24的資料量少一倍。

h264裸碼流的理解:每一段資料前都會有一段描述,該描述的頭部是:0x00000001或者0x000001。

該列印資訊是在雷神**的基礎上修改的,以便像我這種菜鳥弄懂程式具體執行的過程。

其中(1)就是從乙個h264檔案中讀取的元素資料。

(2)是單元型別,。從頭部開始的第乙個資料分解後便可得到。例如第一張圖中的第乙個buf[5]=0x67,換算成二進位制就是01100111,其中第5/6位為11,所以對應3,也就是nalu_priority_highest。最低5bit為00111,對應的是7,也就是nalu_type_sps。

(3)是上一段資料的長度(從第乙個0x00000001到第二個0x00000001之間的資料長度)。

這樣就能一段一段知道是什麼型別的資料了,對以後分析hi3518e的**大有好處,感謝雷神!

H 264碼流格式

2.1 術語和基本概念 2.2 h.264碼流結構 圖2 1 h.264碼流結構 nal單元 nal unit,簡稱nalu 由1個nal頭 nal header 和1個rbsp 或ebsp 組成。nal頭 nal header 長度為1個位元組,由 forbidden zero bit nal r...

h264起始碼格式轉換

h264檔案的nalu的起始碼可以是0x00 0x00 0x01或者0x00 0x00 0x00 0x01 以下通過 功能可以格式化h264檔案為任意一種起始碼型別。int h264 format start code const char dst,const char src,int type 0...

H264和MPEG4起始碼 startcode

1.h.264起始碼 在網路傳輸h264資料時,乙個udp包就是乙個nalu,解碼器可以很方便的檢測出nal分界和解碼。但是如果編碼資料儲存為乙個檔案,原來的解碼器將無法從資料流中分別出每個nal的起始位置和終止位置,為此h.264用起始碼來解決這一問題。h.264編碼時,在每個nal前新增起始碼 ...