创建一个directshow应用程序二2.

事件交互的是实现


directshow有一种机制,实现应用程序和Filter Graph的交互控制,该机制叫做事件通知(Event Notification)。
当Filter状态转换,运行时遇到错误或者要求重画视频窗口时,都会发出一个特定的事件,由Filger Graph处理或者转发给应用程序。

Filter Graph Manager上有三个接口与事件通知有关:IMediaEventSink, IMediaEvent和IMediaEventEx。

IMediaEventSink:用在Filte内部,其接口Notify用于向Filter Graph发送事件通知。
IMediaEvent:应用程序使用它的接口来处理Filter Graph发送来的事件。
IMediaEventEx:IMediaEvent的扩展,支持当Filter Graph有消息发给应用程序时,可以以窗口消息的形式。


事件处理过程如下:
1.Filter Graph中的Filter发送一个事件(运行时出错了或者满足了一定的条件),接受者为Filter Graph Manager.
2.Filter Graph对一些特殊的事件有默认的处理,接受到事件后,要么按照默认的方式处理,要么放到事件队列中。
3.应用程序货值Filter Graph有事件后,就可以调用IMediaEventEx从事件队列中拿消息进行处理了。














你可能感兴趣的:(directshow)