VMR 与以前的 DirectShow 呈现器

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

使用旧筛选器时,图形中需要不同的呈现器,具体取决于硬件配置。

视频呈现器 筛选器用于在非视频端口方案中呈现单个视频流。 它基于图形硬件技术,现在已超过五年,以及较旧的 DirectDraw 版本。 在某些情况下,它使用 GDI 进行呈现。 这样做要么是为了节省五年前限制得多的视频资源,要么要克服 DirectDraw 中与多监视器支持相关的限制。 VMR-7 和 VMR-9 都从未使用 GDI 进行渲染;VMR-7 完全基于 DirectDraw 7,VMR-9 基于 Direct3D 9。

在涉及视频端口或多个视频输入流的方案中,在 VMR 之前,覆盖混音器 筛选器用于呈现。 此筛选器仅使用图形卡上的硬件覆盖,因此通常仅限于大多数卡片提供的一个覆盖图面。 覆盖混音器执行目标颜色键控,但它不能进行 alpha 混合。 由于它没有窗口管理器,因此它必须使用第二个筛选器(视频呈现器)进行窗口管理。 VMR 能够进行真正的 alpha 混合,除了硬件覆盖之外,还可以在软件中创建多个覆盖。

在视频端口方案中,应用程序正在覆盖视频上的隐藏式字幕或其他 VBI 数据,需要额外的筛选器(VBI Surface 分配器),以便为 VBI 文本分配额外的视频内存。 对于 ISV,VMR-7 通过将分配和呈现功能合并到所有方案中使用的单个筛选器来简化应用程序开发。 使用 VMR 时,不再需要 VBI Surface 分配器。 此筛选器在 Windows XP 中由新的 视频端口管理器 筛选器替换,该筛选器执行以前由覆盖混音器执行的所有视频端口任务。

注意

VMR-9 不支持视频端口。

 

VMR 比早期呈现器更可靠,部分原因是它仅使用 DirectDraw 7(或 Direct3D 9(如果使用的是 VMR-9)接口,而不是旧呈现器(使用较旧版本 DirectDraw 的接口混合)。 VMR 还采用新的图像呈现机制,该机制专为当前和子代适配器而设计,这些适配器支持 Direct3D、增加的 VRAM 和视频内存带宽以及硬件加速功能。 使用 VMR 时,重点是前端处理,并减少对视频端口和覆盖的依赖。 但是,即使有了所有新功能,VMR 也设计为与现有应用程序的最大兼容性。

VMR 也是可扩展的。 应用程序可以提供自己的子组件来执行自定义视频效果和/或控制分配和呈现过程。

关于视频混合呈现