L
LeeChange
Unregistered / Unconfirmed
GUEST, unregistred user!
在进入实战之前,本期的几个话题是不得不说的。他是为了我们的第一个DS程序做最后准备
的。
一、Filter Graphs(这个术语小生不敢乱翻译)
在DS中,最基本的软件功能模块(原文为Component,为了不于VCL中的混淆,暂且这么叫吧)
叫Filter。通常,一个Filter只对媒体流做一个单一的操作。例如:
1.从文件中读取流
2.将流送到显卡和声卡
3.解压,比如解MPEG-1
4.从采集设备得到流
Filter得到输入,产生输出。对于一个MPEG-1的视频解码的Filter来说,他的输入是压缩过
的MPEG1流,输出是解压后的RGB视频流。
为完成一个特定的任务,常需要几个Filter,一个Filter的输出作为下一个的输入。象这样
互相联系的几个Filter的集合称作Filter Graph。下图就是完成播放AVI功能的Filter Graph:
TMD:怎么在这儿画图。
我们的程序没有必要去管理Filter Graph中的每一个Filter。实际上DS提供了一个叫Filter
Graph Manager的家伙,他可以控制数据在Graph中的流程。我们的程序只需要发出一些高级的
命令,象“Run”,“Stop”之类。如果我们想得到更直接的控制,也可以通过COM接口直接访
问Filter。Filter Graph Manager提供了事件(event)机制,因此我们的程序可以响应他的事件
比如“数据播放完毕”等等。
另外:Filter Graph Manager还简化了Filter Graph的建造过程。我们只要给他一个文件名,
他就能自己造一个能播放该文件的Filter Graph来。
二、编写DS程序
建造一个典型的DS程序要三个基本步骤,如下图...
1.用CoCreateInstance建立一个Filter Graph Builder的实例
2.用该实例建立Filter Graph
3.控制Filter Graph并对他发出的事件做出响应。
三、准备工作
您可能需要DirectX 8.0 SDK的头文件(单元)。我有,但没处帖。
的。
一、Filter Graphs(这个术语小生不敢乱翻译)
在DS中,最基本的软件功能模块(原文为Component,为了不于VCL中的混淆,暂且这么叫吧)
叫Filter。通常,一个Filter只对媒体流做一个单一的操作。例如:
1.从文件中读取流
2.将流送到显卡和声卡
3.解压,比如解MPEG-1
4.从采集设备得到流
Filter得到输入,产生输出。对于一个MPEG-1的视频解码的Filter来说,他的输入是压缩过
的MPEG1流,输出是解压后的RGB视频流。
为完成一个特定的任务,常需要几个Filter,一个Filter的输出作为下一个的输入。象这样
互相联系的几个Filter的集合称作Filter Graph。下图就是完成播放AVI功能的Filter Graph:
TMD:怎么在这儿画图。
我们的程序没有必要去管理Filter Graph中的每一个Filter。实际上DS提供了一个叫Filter
Graph Manager的家伙,他可以控制数据在Graph中的流程。我们的程序只需要发出一些高级的
命令,象“Run”,“Stop”之类。如果我们想得到更直接的控制,也可以通过COM接口直接访
问Filter。Filter Graph Manager提供了事件(event)机制,因此我们的程序可以响应他的事件
比如“数据播放完毕”等等。
另外:Filter Graph Manager还简化了Filter Graph的建造过程。我们只要给他一个文件名,
他就能自己造一个能播放该文件的Filter Graph来。
二、编写DS程序
建造一个典型的DS程序要三个基本步骤,如下图...
1.用CoCreateInstance建立一个Filter Graph Builder的实例
2.用该实例建立Filter Graph
3.控制Filter Graph并对他发出的事件做出响应。
三、准备工作
您可能需要DirectX 8.0 SDK的头文件(单元)。我有,但没处帖。