YUV 混合模式

[与此页面关联的功能 DirectShow 是一项旧功能。 它已被 MediaPlayerIMFMediaEngine媒体基金会中的音频/视频捕获取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayerIMFMediaEngineMedia Foundation 中的音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

本主题适用于 Windows XP Service Pack 2 或更高版本。

从 Windows XP Service Pack 2 开始,VMR 支持名为 YUV 混合模式的混合模式。 此模式对于高级电视或 DVD 应用程序最有用。 它利用 VMR 混音器的某些功能,在使用统一内存体系结构设计的低端图形硬件上获得更好的性能。 VMR-7 和 VMR-9 都支持 YUV 混合模式。

优点

与 VMR 支持的原始 RGB 混合模式不同,YUV 混合模式在渲染性能方面具有几个优势:

  • 当 VMR 处于 YUV 混合模式时,所有去交错和视频流合成操作都在 YUV 颜色空间中执行。 与等效的 RGB 图面相比,YUV 图面通常需要少 50% 到 60% 的内存带宽。
  • 通过对图形驱动程序的单个调用来执行去交错和流组合。 驱动程序可以使用图形硬件的多纹理功能,从而节省更多内存带宽。

尽管任何视频应用程序都可以使用 YUV 混合模式,但它主要用于两种类型的视频播放应用程序:

  1. 显示隐藏式字幕或电视文本的电视应用程序。
  2. DVD 应用程序显示 DVD 子图片数据或隐藏式字幕。

限制

VMR 在进入 YUV 混合模式时会强制实施许多限制:

  • 流 0 (连接到输入引脚 0 的流) 可以是渐进式的或交错的;所有其他流必须是渐进式的。
  • 流 0 不允许使用GUID_NULL (编织模式) 。
  • DeinterlacePref_Weave不能用作回退模式,因为这可能会阻止创建反交错设备。 即使传入视频未隔行扫描,YUV 混合模式也需要去交错设备。
  • 不能对与每个 VMR 输入流关联的平面 alpha 值进行更改。
  • 用户无法更改已连接视频流的 Z 顺序。 默认 Z 顺序取自引脚顺序。
  • 不支持颜色键。
  • 输入引脚 0 必须接收视频流。
  • 其他输入引脚只能接收视频子流数据,例如 DVD 子图片、隐藏式字幕或电视文本。
  • 其他输入引脚只能接受每像素 alpha YUV 格式,例如 AYUV、AI44 和 IA44。
  • VMR 的任何输入引脚都不能接受任何 RGB 格式。
  • 在向显示器呈现之前,应用程序提供的位图图像不能再与视频组合使用。
  • 单个子流不能使用 VMR 的混音器“输出矩形”函数水平或垂直反转。 支持“正常”流重新定位和调整大小。
  • IVMRMixerControl::SetBackgroundClr) 指定的混合背景色 (仍在 RGB 颜色空间中指定,就像在 RGB 混合模式下一样。

配置

应用程序必须显式配置 VMR 才能利用 YUV 混合模式;原始 RGB 混合模式仍为默认混合模式。 若要在 VMR-7 中启用 YUV 混合模式,请使用 MixerPref_RenderTargetYUV 标志调用 IVMRMixerControl::SetMixingPrefs 。 必须在连接 VMR 的任何输入引脚之前进行此调用。 若要在 VMR-9 中启用 YUV 混合模式,请使用 MixerPref9_RenderTargetYUV 标志调用 IVMRMixerControl9::SetMixingPrefs

确定 VMR-7 是否支持新的 YUV 混合模式的唯一方法是尝试将 VMR 设置为该模式。 如果调用成功,仍可将 VMR 置于 RGB 混合模式(如有必要)。 将 VMR 设置为 YUV 混合模式后,只有在断开所有输入引脚后,才能将 VMR 改回 RGB 混合模式。

在 YUV 混合模式下,可以通过在 SetMixingPrefs 方法中应用以下标志来减少图形处理单元 (GPU) 上的负载:

标志 描述
VMR-7:MixerPref_DynamicSwitchToBOBVMR-9:MixerPref9_DynamicSwitchToBOB
切换到 bob 去交错。
VMR-7:MixerPref_DynamicDecimateBy2VMR-9:MixerPref_DynamicDecimateBy2
水平和垂直方向将图像除以 2。

 

可以在筛选器图运行时添加或删除这些标志;当 VMR 混音器编写下一个视频帧时,将应用更改。 标志不互斥。 这些设置会降低图像的质量,因此通常仅在视频质量不太重要时应用它们,例如,在用户界面的一小部分中播放视频时。

使用 VMR 混合模式