您的位置:首页 > 其它

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

2014-12-26 10:31 113 查看

事件交互的是实现

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从事件队列中拿消息进行处理了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: