关于 Filter Graph 管理器

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

Filter Graph 管理器是一个 COM 对象,用于控制筛选器图中的筛选器。 它执行许多功能,包括以下内容:

  • 协调筛选器之间的状态更改。
  • 建立引用时钟。
  • 将事件传达回应用程序。
  • 为应用程序提供生成筛选器图的方法。

此处简要介绍了其中每个函数。 可在文档的其他地方找到详细信息。

状态更改。 筛选器中的状态更改必须按特定顺序发生。 因此,应用程序不会直接向筛选器发出状态更改命令。 相反,它会向 Filter Graph 管理器提供单个命令,后者将命令分发给每个筛选器。 查找的工作方式与此类似:应用程序向 Filter Graph 管理器提供一个 seek 命令,后者将其分发到筛选器。

参考时钟。 图中的所有筛选器都使用相同的时钟,称为 引用时钟。 引用时钟可确保同步所有流。 应呈现视频帧或音频示例的时间称为 演示时间。 表示时间相对于参考时钟进行测量。 Filter Graph 管理器选择引用时钟,通常是声音卡上的时钟或系统时钟。

图形事件。 Filter Graph 管理器使用事件队列通知应用程序筛选器图中发生的事件。 此机制类似于 Windows 消息循环。

图形生成方法。 Filter Graph 管理器为应用程序提供了向图形添加筛选器、将筛选器连接到其他筛选器以及断开筛选器连接的方法。

Filter Graph 管理器不处理的一个函数是将数据从一个筛选器移动到下一个筛选器。 这由筛选器本身通过其引脚连接完成。 处理始终在单独的线程上进行。

注意

筛选器始终是自由线程的,驻留在与 Filter Graph Manager 相同的进程中,并从进程内服务器加载。 因此,方法调用不会在筛选器之间或筛选器与 Filter Graph 管理器之间封送。

 

筛选器图中的数据流

DirectShow 中的事件通知

设置图形时钟

DirectShow 中的时间和时钟