DirectShow之事件通知

DirectShow中的事件通知用于过滤器与Filter Graph Manager及应用程序之间的通信。当过滤器发布事件,如流结束或错误,Filter Graph Manager会处理这些事件或将它们放入队列。应用程序通过调用IMediaEvent接口的方法检索并处理事件。事件通知有两种通知方式:窗口通知和事件信号。窗口通知通过发送用户定义的消息到应用程序窗口,事件信号则通过手动重置事件来指示队列状态。在处理事件时,应用需要确保正确地获取、响应和释放事件资源。
摘要由CSDN通过智能技术生成

概述

    过滤器通过发布事件通知来通知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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值