【问题标题】:Does VMR9 support native YUV rendering?VMR9 是否支持原生 YUV 渲染?
【发布时间】:2014-05-09 14:49:10
【问题描述】:

我一直在使用 VMR9 渲染 YUV 视频流。我有一些性能问题,所以我运行了一个分析器,发现名为 _yvRgb24 的函数占用了 25% 的 CPU 时间。通过进一步调查,我发现 VMR9 使用该功能来渲染我的视频流。

VMR9 是否在渲染之前将我的YUV 视频转换为 RGB24?它不能立即进行渲染吗?转换算法好像不是很快。

我使用MEDIASUBTYPE_IYUV 作为 VMR9 的输出类型。

【问题讨论】:

  • 除非您有专门的硬件,否则必须在一个或另一个地方进行从 YUV 到 RGB 的转换。理想情况下,转换可以直接在 GPU 上而不是在 CPU 上进行,以使事情变得更快、更高效
  • 所以最终输出到 HWND 应该是 RGB?
  • 是的,据我所知,没有任何 PC/控制台/移动设备硬件可以从软件输出除 RGB 或其变体(rgb8、rgba8、rgba5551、rgb565 等)以外的任何内容

标签: c++ directshow


【解决方案1】:

VMR-9 由 Direct3D 支持,具体像素格式支持的可用性分别取决于。在大多数情况下,您可以选择多种像素格式来渲染,最流行的是 YUY2、YV12、NV12。视频在不转换为 RGB 的情况下显示。

【讨论】:

  • 是否可以知道支持哪种格式?另外,我认为转换为另一种 YUV 格式应该比转换为 RGB 更快,是否可以告诉 VMR9 转换为 YUY2,而不是 RGB?谢谢。
  • 您有兴趣避免使用 RGB,并且您的策略是使用一种 YUV 格式(例如 YUY2)连接到 VMR。一旦你成功了,不要担心会发生什么。 VMR9 不会不必要地转换为 RGB。 YUY2、YV12 等流行格式广泛可用(在古代硬件或远程桌面会话等罕见场景中缺失)。
猜你喜欢
  • 2014-12-11
  • 2012-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-08
相关资源
最近更新 更多