IMediaEventSink用在Filter内部,它的接口方法Notify用以向Filter Graph Manager发送事件通知,我想问它在什么时机向Fi

  • 主题发起人 主题发起人 xsj_by
  • 开始时间 开始时间
X

xsj_by

Unregistered / Unconfirmed
GUEST, unregistred user!
IMediaEventSink用在Filter内部,它的接口方法Notify用以向Filter Graph Manager发送事件通知,我想问它在什么时机向Filter Graph Manager发送事件,并且Filter Graph Manager怎么接收事件来处理? ( 积分: 50 )<br />IMediaEventSink用在Filter内部,它的接口方法Notify用以向Filter Graph Manager发送事件通知,我想问它在什么时机向Filter Graph Manager发送事件,并且Filter Graph Manager怎么接收事件来处理?
 
IMediaEventSink用在Filter内部,它的接口方法Notify用以向Filter Graph Manager发送事件通知,我想问它在什么时机向Filter Graph Manager发送事件,并且Filter Graph Manager怎么接收事件来处理?
 
Filter 内部在很多情况下会调用 IMediaEventSink 这个接口.一部分封装在 IFilter 中,我们不得而知[:(].在几个继承自 IFilter 的类中,IMediaEventSink 的调用具体可以参见 DSPack 的 BaseClass 单元.
IMediaEventSink 是一个接口,也就是COM组件的一个调用.里面具体的消息交互机制,还是不得而知哦[:(!].经过这种抽象的封装,我们可以理解成当调用 IMediaEventSink.Notify 后.FilterGraph 便收到了消息.[:D]
 
可能是我的问题没问好,我想实现的功能是这样的:
Filter Graph播放完一首文件后,它的状态并不会自动切换会State_Stopped,需要响应到EC_COMPLETE事件来调用IMediaContrl::Stop方法停止,我问的是除了通过应用程序来响应这个事件来停止外,利用IMediaEventSink直接通知Filter Graph,由Filter Graph来处理呢?
 
应该可以这么做的.[^]
//[:)]先在 FilterGraph 中得到 IMediaEventSin 接口.
FilterGraph.QueryInterface(IID_IMediaEventSink, FSink);
//[:D]发送回放完成事件.
FSink.Notify(EC_COMPLETE, 0, 0);
---------------------------------------------------------------------
[?] EC_COMPLETE = $01;
{$EXTERNALSYM EC_COMPLETE}
// ( HResult, void ) : defaulted (special)
// Signals the completed playback of a stream within the graph. This message
// is sent by renderers when they receive end-of-stream. The default handling
// of this message results in a _SINGLE_ EC_COMPLETE being sent to the
// application when ALL of the individual renderers have signaled EC_COMPLETE
// to the filter graph. If the default handing is canceled, the application
// will see all of the individual EC_COMPLETEs.
 
那//[:D]发送回放完成事件.
FSink.Notify(EC_COMPLETE, 0, 0);
什么时候发送呢?
filter graph怎么接收并处理呢?
 
amakusa,能不能详细的说一说啊?
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部