您的位置:首页 > 理论基础 > 计算机网络

DirectShow技术简介

2011-04-02 16:51 127 查看
1 DirecX介绍
DirectX软件开发包是微软公司提供程序员的一套在Windows操作平台上开发高性能图形、声音、输入、输出和网络游戏的编程接口。微软将DirectX定义为“硬件设备无关性”,即使用DirectX可以用于设备无关的方法提供设备相关的(高)性能。DirectX标准的建立,可以为硬件开发提供策略,硬件厂商不得不按照这一标准进行产品改进,同时,通过使用DirectX所提供的接口,开发人员可以尽情地利用硬件可能带来的高性能,而无需关系硬件的具体执行细节。
DirectX采用了COM(组件对象模型)标准,因此不同对象的版本可以有不同的接口,这使用DirectX开发的程序即使在未来也能得到完全的兼容和支持。
DirectX是一个庞大的大家族,包含了以下的成员:
DirectX Graphics:集成了以前的DirectDraw和Direct3D技术;
DirectInput:主要支持输入服务(包括鼠标、键盘等),同时支持输出设置;
DirectPlay:主要提供多人网络游戏的通信、组织功能;
DirectSetup:主要提供自动安装DirectX组件的API功能;
DirectMusic:主要支持MIDI音乐合成和播放的功能;
DirectSound:主要提供音频捕捉、回放、音效处理、硬件加速、直接设备访问等功能;
DirectShow:下面具体介绍;
DirecX Media Objects:DirectShow Filter的简化模型,提供更方便的流数据处理方案。从DirectX 8.1版本中的DirectShow中分离出来,成为另一种高效率的流数据处理解决方案。
2 DirectShow简介
              DirectShow是DirectX家族成员中为在Windows平台上处理各种格式的多媒体文件的回放、音视频采集等高性能要求的多媒体应用提供了完整的解决方案;DirectShow集成了DirectX家族中其他成员(如DirectDraw、DirectSound等)的技术,为我们的多媒体应用提供了一下的方便:
              (1)、保证了数据量巨大的多媒体应用数据处理的高效性;
              (2)、解决了音频和视频时刻保持同步;
              (3)、用最简单的方法处理复杂的多媒体源问题,包括本地文件、计算机网络、广播电视以及其他一些数码产品等;
              (4)、提供了解决处理各种多媒体格式文件的方法;
              (5)、支持目标系统中不可预知的硬件变动。
              DirectShow使应用程序开发人员从复杂的数据传输、硬件差异、同步性等工作解脱出来,总体应用框架和底层工作由DirectShow来完成。
3 DirectShow系统



Figure 1 DirectShow系统
如图所示,图中央最大的一块即是DirectShow系统,虚线以下是Ring 0特权级别的硬件设备,虚线以上的是Ring 3特权级别的应用层。DirectShow系统位于应用层中。它使用一种叫Filter Graph的模型来管理整个数据流的处理过程;参与数据处理的各个功能模块称为Filter;各个Filter在Filter Graph中按一定的顺序连接成一条“流水线”协同工作。
[b]从这里可以看出,其实一个个的filter就是一个个的组件,也可以称为node,作为一个独立完成某个工作的模块。

 
Filter
Filter是DirectShow中最基本的概念,是Filter Graph中最小的功能模块,Filter是一种COM组件,一个Filter一般由一个或多个Pin组成,Filter之间也就通过Pin相互连接,构成一条顺序的链路。按照功能来分:Filter大致分为3类:Source Filters、Transform Filters和Rendering Filters。Source Filters主要负责获取数据,数据源可以是文件、因特网计算机里的采集卡(WDM驱动的或VFW驱动的)数字摄像机等,然后将数据往下传输;Transform Filters主要负责数据的格式转换,例如数据流的分离/合成、解码/编码等,然后将数据继续往下传输;Rendering Filters主要负责数据的最终去向——将数据送给显卡、声卡进行多媒体的播放,或者输出到文件进行存储。
 
Filter Graph
Filter Graph是DirectShow系统用来管理Filter的(管理者叫做Filter Graph Manager),Filter Graph可以理解是Filter的“容器”,将需要的各个Filter集合在一起实现统一操作。Filter也只有入到Filter Graph并且接入到工作链路中才能发挥作用。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息