DirectShow提供了如下可用于构建Filter Graph的组件:
·Filter Graph Manager: 该对象控制过滤器图形。 它支持IGraphBuilder,IMediaControl和IMediaEventEx等接口。 所有DirectShow应用程序都会在某个时候使用此对象,但在某些情况下,另一个对象会为应用程序创建Filter Graph Manager。
·Capture Graph Builder:该对象提供了用于构建过滤器图的其他方法。 它最初设计用于构建执行视频捕获的图形(因此名称),但对于许多其他类型的自定义过滤器图形非常有用。 它支持ICaptureGraphBuilder2接口。
·Filter Mapper and System Device Enumerator:这些对象定位在用户系统上注册的过滤器或表示硬件设备的过滤器。
·DVD Graph Builder:该对象为DVD播放和导航构建过滤器图形。 它支持IDvdGraphBuilder接口。
智能连接
智能连接涵盖了一组Filter Graph Manager用来构建全部或部分Filter Graph的算法。每当Filter Graph Manager需要额外的Filter来完成图形时,它大致如下:
1.如果Graph中当前有一个Filter,并且至少有一个未连接的输入Pin,则Filter Graph Manager 将尝试使用该Filter。
2.否则,Filter Graph Manager会在注册表中查找可以接受连接的正确媒体类型的Filter。每个Filter都有一个名为“Merit”的注册表值,它大致指示了过滤器在完成图形时有多大用处。Filter Graph Manager按优值顺序尝试Filter。对于每种流类型(如音频,视频或MIDI),默认渲染器都有很高的优点。解码器也有很高的优点。
如果过Filter Graph Manager卡住了,它将退出并尝试不同的Filter组合.
参考:
https://www.yuque.com/docs/share/2c314d37-be71-4107-ab8b-efa8b3ef2ba2