DirectShow编程(3.2)- 关于DirectShow - Filter Graph和它的组件

本文介绍了DirectShow的Filter Graph及其组件,包括Source、Transform、Renderer和Splitter Filter,阐述了它们在播放AVI文件过程中的作用。Filter Graph Manager负责协调filter状态、建立参考时钟和事件通知。Media Type用于描述数据格式,Media Sample和Allocator管理数据传输。此外,硬件如视频采集卡和声卡通过外壳filter与DirectShow交互,实现与内核模式的通信。
摘要由CSDN通过智能技术生成

3.2. Filter Graph和它的组件
    这一节描述了DirectShow的主要组件,为DirectShow应用程序和DirectShow Filter开发者提供一个介绍。应用程序开发者可以忽略掉很多底层部分,但是,了解底层对于理解DirectShow架构还是很有帮助的。
3.2.1. 关于DirectShow Filter
    DirectShow使用一个模块化的架构,每个处理过程都由一个叫做filter的COM对象来实现。DirectShow为应用程序提供了一系列标准的filter,开发者也可以编写自己的filter来扩展DirectShow的功能。下面是播放一个AVI文件的各个步骤:
    *从文件中读取数据并转成字节流(File Source filter)
    *检查AVI头,分析字节流并将它们分离成视频和音频(AVI Aplitter filter)
    *将视频解码(不同的解码filter,取决于不同的压缩格式)
    *将视频显示出来(Video Renderer filter)
    *将音频送入声卡(Default DirectSound Device filter)

avi play filter graph


    如图所示,每个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链的未端,接受数据并将其展现给用户。比如,一个视频renderer在显示器上绘制视频图像;一个音频renderer将音频数据送入声卡;一个写文件filter(file-writer filter)将数据存盘。
    *splitter filter - 分析输入的数据流并将其分解成两路或多路,比如,AVI splitter分析字节流并将其分解成视频流和音频流。
    *mux filter - 将多路输入流合并成一路。比如,AVI Mux正好与AVI splitter做相反的工作,它将视

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值