AVStream 中的硬件编解码器支持入门

从 Windows 7 开始, Windows Media Foundation 将基于 AVStream 的媒体组件表示为用户模式媒体基础转换 (MRT) 。

通过使用此功能,供应商可以将基于硬件的解码器、编码器和视频处理器呈现为 MMFT,进而可以在应用程序级别进行操作。

AVStream 模型在 Windows 7 中保持不变,只需向微型驱动程序添加少量内容即可启用此功能。

转码拓扑如下图所示:

说明转码拓扑的示意图。

为了获得最佳性能,图表底部行中显示的媒体处理应在专用硬件中进行。 在此方案中,专用转码硬件称为安全硬件编码器解码器 (SHED) 。 SHED 可以打包为主板的插件模块,也可以打包为显示适配器上的集成功能。

Windows 7 仍支持基于软件的转码。 但是,由于系统在专用硬件而不是 CPU 上执行转码工作,因此与基于软件的解决方案相比,基于 SHED 的解决方案可显著改善用户体验。

如上图所示,用户模式客户端可以使用在每个 MFT 上公开的 IMFTransform 接口访问用户模式转换。 IMFTransform 在 Vista 和更高版本的 Windows 中可用,但将基于硬件的媒体处理公开给用户模式应用程序的机制仅从 Windows 7 开始可用。

系统提供的设备代理(或 Devproxy)模块在 DirectShow 流式处理模型中充当与 KSProxy 相同的角色。 Devproxy 代理内核模式下 Ks.sys 与用户模式下的 MFT 组件之间的通信。

生成的包装硬件媒体处理函数称为设备代理 MFT。 若要利用此机制,AVStream 微型驱动程序应执行以下操作: