DirectShow应用程序设计介绍
这篇文章包含两方面内容:Filter Graphs , 写一个DShow应用程序
一、 Filter Graphs
DShow的基本软构件块是一种叫做filter的组件。A Filter一般只执行基于多媒体数据上的单一的操作。例如,有一些DShow Filter有如下功能:
1、 读文件
2、 从视频采集卡上获取视频
3、 为某一种流格式的数据解码,比如 MPEG—1
4、 传送数据到 the graphics(屏幕的画面) 或声卡
Filters接收输入(多媒体数据),生成输出(多媒体数据)。例,假如a filter解码MPEG-1视频数据,则输入就是MPEG编码流,输出就是解码后的RGB视频流(原始视频流)。
为了执行给定的任务,应用程序往往需要连接多个filters。一系列连接的filters叫做a filter graph。图1—1显示了播放一个AVI文件的a filter graph。
图1—1
在a filter graph里,你的应用程序不需要管理单独的filters。取而代之的是,DShow提供了一个叫the Filter Graph Manager的上层组件(简化了filters的管理)。The Filter Graph Manager控制了通过the graph的数据流动。
另外,the Filter Graph Manager简化了a filter graph的创建过程。例如,你可以指定一个文件名,然后the Filter Graph Manager将会生成a graph去播放文件。
二、写一个DShow应用程序
一个典型的DShow应用程序会执行如图2—1所示三个基本步骤。
图2—1
1、 创建the Filter Graph Manager的一个实例。使用CoCreateInstance函数。
2、 用the Filter Graph Manager生成a filter graph。(当然可以用其他组件)
3、 操作the filter graph和响应事件。