一、YUV格式分為兩大類:planar(平面)和packed(打包)。planar格式,先連續存儲所有像素點的Y分量,緊接着存儲所有像素點的U,隨后存儲所有像素點的V。packed格式,每個像素點的Y、U、V分量是連續存儲的。
二、YUV碼流的存儲格式其實與其采樣的方式密切相關,主流的采樣方式有三種,YUV4:4:4,YUV4:2:2,YUV4:2:0。用三個圖來直觀地表示采集的方式,以黑點表示采樣該像素點的Y分量,以空心圓圈表示采用該像素點的UV分量。如下:
1、YUV 4:4:4采樣,每一個Y對應一組UV分量。
2、YUV 4:2:2采樣,每兩個Y共用一組UV分量。
3、YUV 4:2:0采樣,每四個Y共用一組UV分量。
三、YUV各種存儲格式
1、YUV420
(1)IYUV(I420)
IYUV(I420)是planar模式的YUV。
假設YUVI420視頻的長為L,寬為W,則一幀YUV數據長度為L*W*3/2字節,一幀YUV數據中內存起始指針為P,Y數據的起始指針為P,U數據的起始指針為P+L*W,V數據的起始指針為P+L*W*5/4。
(2)YV12
YV12類似於IYUV(I420),只是U和V的順序相反。
(3)NV12
NV12是two-planar模式的YUV。
(4)NV21
NV21類型與NV12,只是U和V的順序相反。
2、YUV444
假設YUVI420視頻的長為L,寬為W,則一幀YUV數據長度為L*W*3字節,一幀YUV數據中內存起始指針為P,Y數據的起始指針為P,U數據的起始指針為P+L*W,V數據的起始指針為P+L*W*2。
參考:
http://www.fourcc.org/fourcc.php
http://www.cnblogs.com/azraelly/archive/2013/01/01/2841269.html