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