YUV數據的幾種采樣格式以及保存方式


YUV數據的幾種采樣格式以及保存方式

1.YUV數據的幾種采樣格式

4:4:4 這個不用解釋了,這是每個像素占三個字節的內存.

4:2:2  Y0U0V0  Y1U1V1  Y2U2V2  Y3U3V3對於這四個像素,采樣之后存放的碼流為:Y0U0 Y1V1 Y2U2 Y3V3,占用的內存大小為4+4/2 +4/2=8

4:2:0並不意味着只有Y和U而沒有V,他指的是對於每行掃描線來說,只有一種色度分量以2:1的抽樣率存儲,相鄰的掃描行存儲不同的色度分量,也就是說,如果一行是4:2:0的話,下一行就是4:0:2, 對於[Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3] [Y4 U4 V4] [Y5 U5 V5] [Y6 U6 V6] [Y7U7 V7] 。采樣之后存放的碼流為Y0 U0 Y1 Y2 U2 Y3 Y4 V4 Y5 Y6 V6 Y7.  占用的內存是width*height*3/2.

2.YUV數據的幾種保存格式

通常有兩大類,打包格式和平面格式,打包格式是指將YUV保存在一個數組里面,然后YUV交叉存放,平面格式是指將YUV分量分別保存在三個不同的數組中.

YUV422

對於YUV422來說,有三種保存方式分別是平面,半平面交叉方式.

注意422交叉存放時的順序是UYVY.

YUV420

420是應該是沒有交叉模式的,只有平面模式和半平面模式.

 

 

 

HISI獲取的YUV數據格式是YUV420的,保存格式一般是NV12或者NV21,就是UV交叉存放的那種。

 

對於YUV420SP的格式來說,從上圖可以看到,對於第i行j列的像素來說(i的范圍是0 ~ width-1,j的范圍是0 ~ height-1),

他的y數據指針就是 i*width + j ; i j 都是從0開始。   

他的u數據指針是:width*height + (i/2) *width + (j/2)*2

他的V數據是:width*height + (i/2) *width + (j/2)*2 + 1

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM