DirectShow与GraphEdit:多媒体处理的强大工具
1. DirectShow中的过滤器
DirectShow程序的基本单位是过滤器(Filters),它们是过滤器图形(Filter Graph)的重要组成部分。过滤器是一个独立的实体,尽管它可以有多种不同功能,但必须具备接收或传输数据流的方法。每个过滤器至少有一个引脚(Pin),引脚为过滤器与过滤器图形中的其他过滤器提供连接点。引脚分为两种类型:输入引脚可接收数据流,输出引脚则产生可发送到其他过滤器的数据流。
DirectShow过滤器主要有以下三种基本类型:
- 源过滤器(Source Filters) :能产生数据流的过滤器。数据流可能源自硬盘上的文件,如预录制的WAV(声音)、AVI(电影)或Windows Media文件;也可能来自实时设备,像麦克风、网络摄像头或数码摄像机等。与Windows驱动模型(WDM)紧密相关,所有已安装的多媒体设备的WDM驱动程序都可自动作为源过滤器供DirectShow使用。将实时设备转换为DirectShow流的源过滤器称为捕获源过滤器。
- 转换过滤器(Transform Filters) :DirectShow中进行有趣操作的地方。它从其他过滤器(可能是源过滤器)接收输入流,对其进行操作,然后将流传递给另一个过滤器。几乎可以对音频或视频流进行任何想象的操作,如解析、编码(例如将WAV数据转换为MP3格式)、解码或为视频序列添加文本覆盖等。还可以在流中创建分支(tee),即将输入流复制并放置在两个或更多输出引脚上;也可以将多个流作为输入并将它们多路复用为单个流。
- 渲染过