轉自 http://blog.163.com/sxs_solo/blog/static/2633338200872202459390/
YUV格式有兩大類:planar和packed。
對於planar的YUV格式,先連續存儲所有像素點的Y,緊接着存儲所有像素點的U,隨後是所有像素點的V。
對於packed的YUV格式,每個像素點的Y,U,V是連續交*存儲的。
以dm642的H263loopback例子程序爲例,
發送線程中,視頻捕獲後我們得到YUV422 planar數據,
然後轉化成YUV420 planar數據,再進行編碼。
以720×488大小圖象YUV420 planar爲例,其存儲格式是:
共大小爲(720×480×3>>1)字節,分爲三個部分:Y,U和V
Y分量: (720×480)個字節
U(Cb)分量:(720×480>>2)個字節
V(Cr)分量:(720×480>>2)個字節
三個部分內部均是行優先存儲,三個部分之間是Y,U,V 順序存儲。
即YUV數據的0--720×480字節是Y分量值,
720×480--720×480×5/4字節是U分量
720×480×5/4 --720×480×3/2字節是V分量。
4 :2: 2 和4:2:0 轉換:
最簡單的方式:
YUV4:2:2 ---> YUV4:2:0 Y不變,將U和V信號值在行(垂直方向)在進行一次隔行抽樣。
YUV4:2:0 ---> YUV4:2:2 Y不變,將U和V信號值的每一行分別拷貝一份形成連續兩行數據。