首页 > 代码库 > YUV格式总结

YUV格式总结

视频数据总要跟YUV打交道,由于不同公司组织基于对各自产品格式的定义不同,派生出各种各样不同的YUV格式。
总的来说,YUV从像素组织形式上来分有两种:1.planer模式,2.packet模式。
planar模式举例: Y0Y1....Yn  U0U1...Um  V0V1..Vm,YUV三个通道分别连续存储;
packet模式举例: Y0U0V0 + Y1U1V1 + ... + YnUnVn,YUV三个通道混合存储。
planar模式有利于编解码的输入输出;packet模式有利于视频数据采集输入与显示输出。

由于人眼对于色度不敏感,因此可以降低色度采样,这样可以降低处理数据量,也减少存储空间。
根据UV采样的不同,YUV格式又可以分为400,420,422,444等格式。
400 灰度数据,没有色度数据;
420 色度在水平和垂直两个方向上,采样率都减半。这样每相邻的4个Y公用一个U,V数据,U,V的数据量都为Y的1/4. (420这个名字起的非常不好,令人产生误解,但是约定俗成就这个延续下来了。)
422 色度在水平方向上采样率减半,这样每行相邻的2个Y公用一个U,V数据,U,V的数据量都为Y的1/2.
444 色度采样率和亮度一样,每个Y都有各自的U,V数据,U,V的数据量都和Y相同。
还有种411格式,不常用,就不关注了。
一般称400用8bit来表征一个像素点,420是12比特,422是16比特,444是24比特。

用总的数据量/像素个数 就是这个比特数。例如420格式 总数据量是(w*h + w*h/4 + w*h/4)*8比特 = 12*w*h比特。

                                                             YUV常用格式

 格式Mode通道比特示例
 GRAYPlanar18400. Y0Y1...Y15
 I420Planar312420. Y0Y1..Y15  U0U1U2U3 V0V1V2V3   * 常用 理解为YU12
 IYUVPlanar312同I420
 YUV420PPlanar312同I420
 YUVJ420PPlanar312同I420,不同的是色彩转换公式,YUVJ使用  JPEG 公式, 输出数据范围[0..255], I420的范围是 [16-240]
 YV12Planar312420. Y0Y1..Y15  V0V1V2V3 U0U1U2U3   * 常用 很多编解码器都用这个格式输入输出
 YVU420PPlanar312同YV12
 NV12Planar212420. Y0Y1..Y15  U0V0U1V1.....U3V3 *常用
 NV21Planar212420. Y0Y1..Y15  V0U0V1U1.....V3U3
 YV16Planar316422. Y0Y1..Y15  V0V1..V7 U0U1..U7
 YUV422PPlanar316同YV16
 I422Planar316同YV16
 UYVYPacked116422. U0Y0V0Y1|U1Y2V1Y3|...
 Y422Packed116同UYVY
 YUY2Packed116422. Y0U0Y1V0|Y2U1Y3V1|...  *很多摄像机的输出格式
 YUV422Packed116同YUY2
 YUYVPacked116同YUY2
 YVYUPacked116422. Y0V0Y1U0|Y2V1Y3U1|...
 YU16Planar316422. Y0Y1..Y15 U0U1..U7 V0V1..V7
 NV16Planar216422. Y0Y1..Y15  U0V0U1V1..U7V7
 YV24Planar324444. Y0Y1..Y15  V0V1..V15 U0U1..U15
 I444Planar324同YV24
 IYU2Packed124444. U0Y0V0|U1Y1V1|...


参考:
http://www.fourcc.org/yuv.php
http://www.cnblogs.com/azraelly/archive/2013/01/01/2841269.html

YUV格式总结