【问题标题】:420YpCbCr8BiPlanarVideoRange To YUV420 ?/How to copy Y and Cbcr plane to Single plane?420YpCbCr8BiPlanarVideoRange 到 YUV420 ?/如何将 Y 和 Cbcr 平面复制到单平面?
【发布时间】:2011-06-11 08:35:57
【问题描述】:

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

我的怀疑是

1.420YpCbCr8BiPlanarVideoRange,420YpCbCr8BiPlanarFULLRange, 420YpCbCr8PlanarFullRange,420YpCbCr8Planar和YUV420的区别?
2.如何将 420YpCbCr8BiPlanarVideoRange 转换为 YUV420?
3.如何将YUV420转32BGRA?

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

我已经完成了 Accelerate 框架......它具有用于关注 planar8,planerF,RGBA8888 等的图像转换......任何方式将这些格式与 32BGRA/YUV420/ 420YpCbCr8BiPlanarVideoRange 和我的要求相同吗?????

提前致谢

提前致谢

【问题讨论】:

  • 2) 我认为 420YpCbCr8BiPlanarVideoRange 是 NV12,而 YUV420 是 I420。要从 NV12 转换为 I420,您应该使用 libyuv。它也用于 I420 -> BGRA

标签: iphone image-processing avfoundation yuv


【解决方案1】:

主要区别在于:

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

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

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

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

【讨论】:

  • @codo,非常感谢您的详细解释。+1。又是一个小小的疑问。那么 kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange 和 YUV 420 是一样的写????
  • @Codo:: 是否有可能的方式将 Biplaner 转换为刨床?因为我的编解码器需要 YUV420 planer,但我有 biplanner 格式。加速架构图像转换库有刨床选项。对我有用吗?
  • @Asta ni enohpi:关于YUV420 fomat的第三个问题发生了什么?你删除了吗(连同我的回答)?
  • @Codo:UnKnowingly Delete While Edit my Question.由于网络不佳无法回滚
  • 将双平面图像格式转换为平面很简单:只需将两个平面复制到一个内存块中即可。平面格式只是亮度和色度平面的串联。但我仍然不确定您需要什么目标格式:YUV420 根本不是一个精确的描述。虽然我已经为您提供了大量有关图像格式的信息,但我的印象是您实际上需要视频格式。请尽可能多地发布有关目标格式的详细信息。
猜你喜欢
  • 1970-01-01
  • 2016-09-18
  • 2017-07-27
  • 1970-01-01
  • 1970-01-01
  • 2019-04-11
  • 2019-09-18
  • 2015-02-15
  • 1970-01-01
相关资源
最近更新 更多