DMO 的优点
[与此页面关联的功能(DirectShow)是一项旧功能。 它已被 MediaPlayer、IMFMediaEngine取代,并在媒体基金会 音频/视频捕获。 这些功能已针对 Windows 10 和 Windows 11 进行了优化。 Microsoft强烈建议新代码尽可能使用 MediaPlayer、IMFMediaEngine 和 Media Foundation 中的音频/视频捕获,而不是 DirectShow。 Microsoft建议重写使用旧 API 的现有代码,以尽可能使用新 API。]
DMO 具有以下优势:
- 它们通常比 DirectShow 筛选器更小且更简单,因为它们支持更少的功能。
- 它们比 DirectShow 筛选器更灵活,因为它们不需要筛选器图。 如果需要 DirectShow 提供的服务,例如同步、智能连接、数据流的自动处理和线程管理,则可以将它们与 DirectShow 配合使用。 不需要这些服务的客户端可以直接访问 DMO。
- DMO 始终执行同步数据处理,这消除了编写筛选器时必须考虑的许多线程问题。
- 与传统的 ACM 和 VCM 编解码器不同,DMO 基于组件对象模型(COM),因此可以通过 QueryInterface进行扩展。
- DMO 支持比 ACM 或 VCM 编解码器更通用的流式处理模型。 与 DirectShow 筛选器一样,DMO 可以支持多个输入和输出。
出于这些原因,建议使用 DMO 作为编写编码器、解码器和音频效果的解决方案。 还可以使用许多其他方案,具体取决于应用程序的需求。
DMO 与 DirectShow 筛选器有何不同
DirectShow 筛选器不能在 DirectShow 筛选器图之外运行。 在 DirectShow 中,筛选器图形管理器在应用程序和筛选器之间进行调解。 DirectShow 筛选器执行流式传输数据所需的大部分工作,包括:
- 分配缓冲区。
- 协商媒体类型和与其他筛选器的连接。
- 通过筛选器图推送数据。
- 将事件发送到 Filter Graph 管理器。
- 同步多个线程。
相比之下,DMO 不会执行这些作。 相反,这些类型的任务是使用 DMO 的客户端的责任。 客户端分配缓冲区,用数据填充缓冲区,并将其传送到 DMO。 DMO 处理数据,客户端检索生成的输出缓冲区。
相关主题
-
关于 DMO 的