概述
过滤器通过发布事件通知来通知Filter Graph Manager关于事件。 该事件可能是某种预期的结果,例如流结束,或者它可能表示错误,例如未能呈现流。 过滤器图形管理器本身处理一些过滤器事件,并使其他应用程序处理。 如果筛选器图形管理器不处理筛选器事件,它会将事件通知放入队列中。 过滤器图也可以为应用程序排队自己的事件通知。
应用程序从队列中检索事件,并根据事件的类型对它们做出响应。 因此,DirectShow中的事件通知与Microsoft Windows消息队列方案类似。 应用程序还可以取消给定事件类型的Filter Graph Manager的默认行为。 Filter Graph Manager然后将这些事件直接放入队列中供应用程序处理。
这种机制的作用如下:
·Filter Graph Manager与应用程序进行通信。
·筛选器与应用程序和Filter Graph Manager进行通信。
·确定其参与处理事件的程度的申请。
检索事件
Filter Graph Manager公开了三个支持事件通知的接口:
·IMediaEventSink包含过滤器发布事件的方法。
·IMediaEvent包含应用程序检索事件的方法。
·IMediaEventEx继承并扩展IMediaEvent接口。
通过在Filter Graph Manager上调用IMediaEventSink :: Notify方法过滤事件通知。事件通知由定义事件类型的事件代码和提供附加信息的两个参数组成。根据事件代码,参数可能包含指针,返回码,参考时间或其他信息。
要从队列中检索事件,应用程序会在Filter Graph Manager