又确认了一下H264的视频格式——
每像素12位"的方法。这么说的原因可以从对四个像素的采样中看出. 使用4:4:4采样,一共要进行12次采样,对每一个Y,Cb和Cr,就需要12*8=96位,平均下来要96/4=24位。使用4:2:0就需要6*8 =48位,平均每个像素48/4=12位。
在一个4:2:0隔行扫描的视频序列中,对应于一个完整的视频帧的Y,Cb,Cr采样分配到两个场中。可以得到,隔行扫描的总采样数跟渐进式扫描中使用的采样数目是相同的。
对比一下:
Y41P(和Y411)(packed格式)格式为每个像素保留Y分量,而UV分量在水平方向上每4个像素采样一次。一个宏像素为12个字节,实际表示8个像素。图像数据中YUV分量排列顺序如下: U0 Y0 V0 Y1 U4 Y2 V4 Y3 Y4 Y5 Y6 Y8 …
IYUV格式(planar)为每个像素都提取Y分量,而在UV分量的提取时,首先将图像分成若干个2 x 2的宏块,然后每个宏块提取一个U分量和一个V分量。YV12格式与IYUV类似,但仍然是平面模式。
YUV411、YUV420格式多见于DV数据中,前者用于NTSC制,后者用于PAL制。YUV411为每个像素都提取Y分量,而UV分量在水平方向上每4个像素采样一次。YUV420并非V分量采样为0,而是跟YUV411相比,在水平方向上提高一倍色差采样频率,在垂直方向上以U/V间隔的方式减小一半色差采样,如下图所示。
(好像显示不出来突下图像)
各种格式的具体使用位数的需求(使用4:2:0采样,对于每个元素用8个位大小表示):
格式: Sub-QCIF 亮度分辨率: 128*96 每帧使用的位: 147456
格式: QCIF 亮度分辨率: 176*144 每帧使用的位: 304128
格式: CIF 亮度分辨率: 352*288 每帧使用的位: 1216512
格式: 4CIF 亮度分辨率: 704*576 每帧使用的位: 4866048
格式: QCIF 亮度分辨率: 176*144 每帧使用的位: 304128
格式: CIF 亮度分辨率: 352*288 每帧使用的位: 1216512
格式: 4CIF 亮度分辨率: 704*576 每帧使用的位: 4866048
本文转自 曾永刚 51CTO博客,原文链接:http://blog.51cto.com/zyg0227/295496