ffmpeg - AVPixelFormat," smaples"在文件中意味着什么?

时间:2017-06-16 13:27:45

标签: image ffmpeg

我不理解文档,例如:

AV_PIX_FMT_YUV422P planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples) 

我不明白"(每2x1 Y样品1个Cr& Cb样品)"的含义, 这是什么意思4:2:2?我无法在任何地方找到解释。

另外,我看到像AV_PIX_FMT_YUV420P这样的类型有12bpp。这是否意味着每个像素由12位表示?如果是这样,它是如何表现的?我应该为每个像素分配两个字节并忽略最后4位吗?或者我应该分配像ceil((#pixels)* 1.5)bytes这样的东西?

1 个答案:

答案 0 :(得分:3)

  

AV_PIX_FMT_YUV422P平面YUV 4:2:2,16bpp,(每2x1 1 Cr& Cb样品)   Y样本)

对于这里的所有意图和目的,Cb = UCr = v(这里没有区别,但它只会让事情变得更加混乱,所以现在最好忽略)

P中的AV_PIX_FMT_YUV422P代表平面。意味着每个通道都有自己的平面或缓冲区。 Y,U和V有一个单独的图像。

4:2:2中,色度(UV)平面是亮度(Y)平面高度的一半。因此,如果您的图像是1920x1080,则色度平面为1920x540。 对于4:2:0铬平面是半高半宽,960x540。

4:2:2 16bpp = (8 × 1920 × 1080 + 8 × 1920 × 1080 + 8 × 960 × 540) / (1920 × 1080)

4:2:0 12bpp = (8 × 1920 × 1080 + 8 × 960 × 540 + 8 × 960 × 540) / (1920 × 1080)

  

我应该为每个像素分配两个字节吗?

不,你应该分配3架飞机并独立填充。