DMO 的优点

[与此页面关联的功能(DirectShow)是一项旧功能。 它已被 MediaPlayerIMFMediaEngine取代,并在媒体基金会 音频/视频捕获。 这些功能已针对 Windows 10 和 Windows 11 进行了优化。 Microsoft强烈建议新代码尽可能使用 MediaPlayerIMFMediaEngineMedia 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