420YpCbCr8BiPlanarVideoRange到YUV420?/如何将Y和Cbcr平面复制到单平面?

时间:2011-06-11 08:35:57

标签: iphone image-processing avfoundation yuv

我使用AVFoundation捕获视频。我已设置(视频设置)并获取outputsamplebuffer kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange格式。但我需要YUV420格式进行进一步处理。

我怀疑是

1. 420YpCbCr8BiPlanarVideoRange,420YpCbCr8BiPlanarFULLRange, 420YpCbCr8PlanarFullRange,420YpCbCr8Planar和YUV420之间的差异?
 2.我可以将420YpCbCr8BiPlanarVideoRange转换为YUV420吗?  3.如何将YUV420转换为32BGRA?

4) 或其他一些方法来做到这一点???这是任何开源库或Apple Framework ....

我已经完成了加速框架......它有跟随planar8,planerF,RGBA8888等的图像转换...任何方式与32BGRA/YUV420/ 420YpCbCr8BiPlanarVideoRange相等的格式和我的要求???? ?

提前致谢

提前致谢

1 个答案:

答案 0 :(得分:29)

主要区别是:

如果您具有双平面格式,则Y数据(亮度)和CbCr数据(色度或颜色信息)位于称为平面的两个独立存储区域中。您可以使用索引为0的CVPixelBufferGetBaseAddressOfPlane来获取Y数据,使用索引1来获取CbCr数据。如果格式为平面,则两种数据都在同一平面上(首先是所有Y值,然后是所有Cb值,最后是Cr值)。

如果您具有全范围格式,则0到255的值将用于每个亮度或色度值。 视频范围格式仅使用16到235之间的值(由于某些历史原因)。

术语 420 表示格式包含多少亮度和多少色度信息。它基本上表示每个像素都有亮度信息,每个2x2块都有色度信息。

YUV420是 - 据我所知 - 不是精确指定的格式。它通常用于平面YpCbCr 420格式。