DirectShow Filter Graph组件

DirectShow Filter

   DirectShow使用一个模块化的架构,每个处理过程都由一个叫做filter的COM对象来实现。DirectShow为应用程序提供了一系列标准的filter,开发者也可编写自己的filter来扩展DirectShow的功能。下面是播放一个AVI文件的步骤:

  ·从文件中读取数据并转换成字符流(File Source filter)

  ·检查AVI头,分析字节流并将它们分离成视频和音频(AVI Aplitter filter)

  ·将视频解码(不同的解码filter,取决于不同的压缩格式)

  ·将视频显示出来(Video Render filter)

  ·将音频送入声卡(Default DirectSound Device filter)

 

   每个filter与一个或多个其他的filter相连,其中的连接点也是一个COM对象,称作Pin,filter使用Pin将数据从一个filter转移到另一个。在DirectShow中,这一系列连接在一起的filter称作filter graph。

   Filter可能处于三种不同的状态:运行、停止和暂停状态。filter在运行状态时处理数据,停止状态时停止处理数据,暂停状态则是表示就绪,可以开始进入运行状态。除了极个别的情况,一个filter Graph中的所有filter通常都处在同一个状态下,因此,filter graph也可以称其处于运行、停止、暂停状态。

   Filter可以被分为几个大的种类:

   ·source filter: filter graph的数据源,这些数据可以来自文件,网络,摄像头或任何其它东西。每一个source filter操作不同类型的数据源。

   ·transform filter:接收数据,处理数据并将它送入下一个filter。编码filter和解码filter都属于这个种类。

   ·Renderer filter:处于filter链的末端,接收数据并将其展现给用户。比如,一个视频render在显示器上回执视频图像;一个音频renderer将音频数据送入声卡;一个写文件filter(file-writer filter)将数据存盘。

   ·splitter filter:分析输入的数据流并将其分解成两路或多路,比如,AVI splitter分析字节流并将其分解成视频流和音频流。

   ·mux filter:将多路输入流合并成一路。比如,AVI Mux正好与AVI splitter做相反的工作,它将视频和音频流合成一个AVI格式字节流。

    以上的分类并不是绝对的,比如,ASF Reader Filter同时充当了source filter和splitter filter的角色。

    所有的DirectShow filter都提供IBaseFilter接口,所有的Pin也都提供IPin接口。DirectShow也定义了许多其它的接口以实现特定的功能。

 

Filter Graph Manager

   Filter Graph Manager是一个用以控制filter graph中的filter的COM对象。它提供了许多功能,包括:

   ·协调filter之间的状态变化

   ·建立参考时钟(reference clock)

   ·将事件返回给应用程序

   ·提供应用程序建立filter graph的方法

 

   状态变化

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值