Filter GraphManager是一个用以控制Filter Graph中的Filter的COM对象。它提供了许多功能,包括:协调Filter之间的状态变化;建立参考时钟;将事件返回给应用程序;提供建立Filter Graph的方法共应用程序调用。
1)状态变化:Filter的状态变化必须遵循一个特定的次序。因此,应用程序不能将状态变化的命令直接发给Filter,而是将一个单独的命令发给Filter Graph Manager,然后由Filter Graph Manager将命令分发给各个Filter。定位也是用相似的方法:应用程序发送一个定位命令给Filter Graph Manager,由它分发给各个Filter。
2)参考时钟:在Filter Graph中的所有Filter都使用一个相同的时钟,称为参考时钟。参考时钟保证了所有数据流的同步性。一个视频站或一个音频样本被播放的时间称作呈现时间。呈现时间精确地对应于参考时钟。
3)Graph事件:Filter Graph Manager使用一个消息队列来通知应用程序发生在Filter Graph中的事件。这种机制类似于windows消息循环。
4)Graph-building方法:Filter Graph Manager提供给应用程序可调用的方法,包括将Filter加入到Filter Graph中,将Filter与Filter连接或断开连接。
5)Filter Graph Manger不提供操作在Filter之间流动数据的功能,这个功能由Filter通过它们的Pin实现。连接总是由另一个线程完成。
参考:
https://www.yuque.com/docs/share/ea2e65ec-1a40-4309-bcbf-e4e006bf90b2