视频质量管理

本主题介绍对 Windows 7 中的视频管道的一些改进,适用于 Microsoft Media Foundation 和 Microsoft DirectShow。

在完美的世界中,无论视频分辨率或 CPU/GPU 负载如何,视频都不会出现故障。 当然,实际上,视频管道必须能够应对有限的硬件资源,并且必须自适应地定制对系统环境的播放。 视频质量控制的目标是:

  • 减少故障(丢弃或延迟帧)。
  • 减少内存使用量,尤其是在 GPU 中。
  • 降低能耗,尤其是在电池电量上运行的笔记本电脑。
  • 根据资源约束,尽可能获得最佳的图像质量。
  • 使视频与音频保持同步。

其中一些目标是相反的,特别是在低端系统上。 一般情况下,速度和质量之间存在权衡。 故障比视觉质量的适度减少更令人反感。 能耗的相对重要性因环境而异:在电池电源上运行的笔记本电脑中,它非常重要。

在 Windows 7 中,增强的视频呈现器(EVR)对视频质量控制有更好的支持。 Media Foundation 管道和 DirectShow 管道都已更新,以利用这些功能。 使用双管齐下的方法:

  • 在播放开始之前,管道可以根据用户的电源管理设置和硬件信息执行静态优化。
  • 播放开始后,管道可以根据运行时性能应用动态优化。

媒体基础中的质量控制

若要启用静态优化,在解析拓扑之前,在部分拓扑上设置 MF_TOPOLOGY_STATIC_PLAYBACK_OPTIMIZATIONS 属性。 拓扑加载程序在其 IMFTopoLoader::Load 方法中查询此属性。

如果启用静态优化,则应在拓扑上设置另外两个属性:

属性 描述
MF_TOPOLOGY_PLAYBACK_MAX_DIMS
指定视频播放窗口的最大大小。
MF_TOPOLOGY_PLAYBACK_FRAMERATE
指定监视器刷新速率。

 

这两个属性有助于管道计算质量控制的最有效设置。

动态优化由质量管理器执行。 无需执行任何作即可启用质量经理;它会自动启用。 质量管理器存在于 Windows Vista 中;在 Windows 7 中,EVR 可以更好地响应来自质量管理器的消息。

DirectShow 中的质量控制

DirectShow 支持 DVD 播放的静态和动态优化。 若要在 DVD 播放应用程序中启用这些优化,请设置 IDvdGraphBuilder::Render DvdVideoVolume 方法的 dwFlags 参数中的以下标志:

描述
AM_DVD_ADAPT_GRAPH 启用静态优化。
AM_DVD_EVR_QOS 启用动态优化。

 

其他 DirectShow 应用程序可以通过直接在 EVR 筛选器上调用 IEVRFilterConfigEx::SetConfigPrefs 方法来实现动态优化。 指定 EVRFilterConfigPrefs_EnableQoS 标志。

注意

DirectShow 中的静态优化仅限于 DVD 播放。

 

EVR 中的质量控制

EVR 支持一些用于质量控制的新配置标志。 如果启用前面所述的质量控制优化,则无需直接设置这些标志。 但是,这些记录适用于希望对 EVR 进行更精细控制的应用程序。

通过调用 IMFVideoMixerControl2::SetMixingPrefs 方法在 EVR 混音器上设置以下标志:

标志 描述
  • MFVideoMixPrefs_ForceHalfInterlace
  • MFVideoMixPrefs_AllowDropToHalfInterlace
跳过每个交错帧的第二个字段。
  • MFVideoMixPrefs_AllowDropToBob
  • MFVideoMixPrefs_ForceBob
使用 bob 去交错,即使驱动程序支持更高质量的反交错模式。

 

通过调用 IMFVideoDisplayControl::SetRenderingPrefs 方法,在 EVR 演示者上设置以下标志:

标志 描述
  • MFVideoRenderPrefs_ForceOutputThrottling
  • MFVideoRenderPrefs_AllowOutputThrottling
限制输出以匹配 GPU 带宽。
  • MFVideoRenderPrefs_ForceBatching
  • MFVideoRenderPrefs_AllowBatching
Batch Direct3D 演示调用。 这种优化使系统能够更频繁地进入空闲状态,从而减少能耗。
  • MFVideoRenderPrefs_ForceScaling
  • MFVideoRenderPrefs_AllowScaling
使用小于输出矩形的矩形执行视频混合。 将结果缩放为正确的输出大小。

 

此外,EVR 媒体接收器还支持与以下每个标志对应的配置属性:

在播放开始之前,可以直接在 EVR 媒体接收器上设置这些属性,作为调用 IMFVideoMixerControl2IMFVideoDisplayControl 方法的替代方法。 若要设置这些属性,请查询 EVR 媒体接收器 IMFAttributes

媒体会话