前段時間搞x264編碼測試该编,傳參的時候需要告訴編碼器我的原始數(shù)據(jù)格式是什么,其中在x264.h頭文件中定義了如下一堆類型硕淑。
/* Colorspace ``type
*/
#define X264_CSP_MASK 0x00ff /* */
#define X264_CSP_NONE 0x0000 /* Invalid mode */
#define X264_CSP_I400 0x0001 /* monochrome 4:0:0 */
#define X264_CSP_I420 0x0002 /* yuv 4:2:0 planar */
#define X264_CSP_YV12 0x0003 /* yvu 4:2:0 planar */
#define X264_CSP_NV12 0x0004 /* yuv 4:2:0, with one y plane and one packed u+v */
#define X264_CSP_NV21 0x0005 /* yuv 4:2:0, with one y plane and one packed v+u */
#define X264_CSP_I422 0x0006 /* yuv 4:2:2 planar */
#define X264_CSP_YV16 0x0007 /* yvu 4:2:2 planar */
#define X264_CSP_NV16 0x0008 /* yuv 4:2:2, with one y plane and one packed u+v */
#define X264_CSP_YUYV 0x0009 /* yuyv 4:2:2 packed */
#define X264_CSP_UYVY 0x000a /* uyvy 4:2:2 packed */
#define X264_CSP_V210 0x000b /* 10-bit yuv 4:2:2 packed in 32 */
#define X264_CSP_I444 0x000c /* yuv 4:4:4 planar */
#define X264_CSP_YV24 0x000d /* yvu 4:4:4 planar */
#define X264_CSP_BGR 0x000e /* packed bgr 24bits */
#define X264_CSP_BGRA 0x000f /* packed bgr 32bits */
#define X264_CSP_RGB 0x0010 /* packed rgb 24bits */
#define X264_CSP_MAX 0x0011 /* end of list */
#define X264_CSP_VFLIP 0x1000 /* the csp is vertically flipped */
#define X264_CSP_HIGH_DEPTH 0x2000 /* the csp has a depth of 16 bits per pixel component */
|
但是這個定義只是對于這個應用而言课竣,對于其他的應用或者場景中,相同的數(shù)據(jù)格式卻有著不同的名字置媳,于是為了弄懂他們的差別關系稠氮,檢索了一大堆信息,整理了一個圖文出來如下半开。
首先要介紹的是YUV444隔披,這種格式占用空間最大,每個像素點有一個Y分量+一個U分量+一個V分量所以和rgb一樣每個像素點占用3個字節(jié)寂拆!
但是根據(jù)UV存儲順序不一樣奢米,又有兩種不同的格式。
接下來是YUV422 每兩個Y分量公用一個UV分量纠永,所以一個像素占用兩個字節(jié)鬓长,根據(jù)存儲順序不同又分為四種不同的格式。
還有一種變態(tài)的V210格式尝江,好像是蘋果搞出來的涉波。
——————————————————————————————————————————————————————————
————————————————————————————————————————————————————————————————
接下來是YUV420 每四個y分量公用一個UV分量,所以每個像素點占用1.5個字節(jié)空間炭序,根據(jù)存儲順序不一樣又分為四個不同的類型啤覆。
——————————————————————————————————————————————————————————————————