创建一个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从事件队列中拿消息进行处理了。
相关文章推荐
- 创建一个directshow应用程序一
- 如何用VB.Net创建一个三层的数据库应用程序
- 创建一个Windows Service应用程序
- [转]创建控件时出错/lm/w3svc/... 不是一个有效的iis应用程序" 的解决办法
- 创建一个Windows Service应用程序
- 用VB.NET创建一个三层应用程序的例子……
- 如何使用C#创建一个三层的数据库应用程序
- JXTA应用程序中创建一个PeerGroup的典型代码
- "创建控件时出错/lm/w3svc/... 不是一个有效的iis应用程序" 的解决办法
- "创建控件时出错/lm/w3svc/... 不是一个有效的iis应用程序" 的解决办法
- Flair–一个让你在线创建Flex/AIR应用程序的项目
- 如何用VB.Net创建一个三层的数据库应用程序
- 如何使用C#创建一个三层的数据库应用程序
- 创建一个驱动程序安装应用程序的过程
- "创建控件时出错/lm/w3svc/... 不是一个有效的iis应用程序" 的解决办法
- Sun Java Studio Enterprise 实践:创建一个 Web 应用程序
- 如何用创建命名对象来判断应用程序是否已有一个实例在运行?
- 如何用VB.Net创建一个三层的数据库应用程序
- 创建一个 Java 应用数据库的桌面应用程序
- 用VB.Net创建一个三层的数据库应用程序