kenlistian

厚积薄发. 勤为桨,思为帆

   :: 首页 :: 新随笔 ::  :: 聚合  :: 管理 ::
  73 随笔 :: 4 文章 :: 22 评论 :: 0 Trackbacks

DirectShow 的几个接口说明
(1) IGraphBuilder接口
     用于构造Filter Graph的接口,建立和管理一系列的Filter,过滤和处理源媒体流。
(2) IMediaControl接口
     用于控制多媒体流在Filter Graph中的流动,如流的启动和停止。
(3) IMediaEvent接口
     用于捕获播放过程中发生的事件,并通知应用程序,如EC_COMPLETE等。
(4) IVideoWindow接口
     用于控制视频窗口的属性。
(5) IMeadiaSeeking接口
     用于查找媒体的接口,定位流媒体,控制多媒体数据播放提供精确控制。
(6) IBaseFilter接口
    从ImediaFilter接口继承,用来定义一个具体的过滤器指针,并对多媒体数据进行处理。
(7) IPin接口
    用于管理两个过滤器之间的Pin,从而连接过滤器。
(8) IsampleGrabberCB接口
   是Sample Grabber过滤器的一个接口,用于当流媒体数据通过过滤器时进行采样以获得帧图象。


Filter必须加入到Filter Graph并接入到工作链路中才能发挥作用。
如想绕过Filter Graph而直接使用Filter实现的功能模块,那就要将Filter功能
移植成DirectX媒体对象(DMO)。
Filter有3种状态:停止、暂停和运行。

Filter Chain是相互连接着的一条Filter链路,并且链路中的每个Filter全都有一个处于“已连接”状态的
输入Pin,至多有一个处于“已连接”状态的输出Pin,这条Filter链路中的数据流不依赖链路外的其他Filter。

Filter Chain通过IFilterChain接口来进行相关操作。
当Filter Graph处于运行状态下,Filter Chain可以在运行和停止状态之间切换;
当Filter Graph处于暂停状态下,Filter Chain可以在暂停和停止状态之间切换。
Filter Chain只有两种状态转换。

Filter的数据传送
Filter之间以Sample的形式传送数据。
Sample是一个封装了一定大小数据内存的COM组件。
用于数据传输的一般是输入pin上实现的IMemInputPin接口。

posted on 2008-12-08 11:38 kenlistian 阅读(716) 评论(0)  编辑 收藏 引用 所属分类: directx

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理