本文详细介绍了DirectShow的系统组成,并讨论了利用DirectShow在VC++ 6.0上开发媒体播放器的关键步骤。
DirectShow技术是DirectX推出的建立在DirectDraw和DirectSound组件基础之上的多媒体应用程序开发工具包,它提供对多媒体数据流的高质量捕获和回放,代表着未来多媒体应用程序开发的方向。详细介绍了DirectShow的系统组成,并讨论了利用DirectShow在Visual C++ 6.0平台上开发简单媒体播放器的关键步骤。
关键字:DirectShow;COM;过滤器;引脚;过滤器图表管理器
1 DirectX简介
DirectX是Microsoft公司为游戏和其他高性能多媒体应用所提供的一套底层应用程序编程接口。这些接口包括对二维和三维图形,声效和音乐,输入设备以及多玩家网络游戏等的支持。目前DirectX的最高版本是DirectX 9.0。
1.1 DirectX的组成
DirectX 9.0由下列组件构成:
(1)DirectX Graphics:该组件组合DirectX旧版本中的DirectDraw和Direct3D两个组件,使其成为一个适用于所有图形程序的单独的应用程序接口。其中的Direct3D扩展(D3DX)应用程序库简化了多数图形程序的工作。
(2)DirectInput:支持各种输入设备,完全支持力反馈技术。
(3)DirectPlay:支持多玩家网络游戏。
(4)DirectSound:支持用于播放和捕获音频波形的高性能音频应用软件的开发。
(5)DirectMusic:为音乐音轨以及基于波表、MIDI(Musical Instrument Devices Interface)或其他由DirectMusic Producer创作的非音乐音轨,提供了一套完整的解决方案。
(6)DirectShow:提供对多媒体数据流的高质量捕获和回放。
(7)DirectSetup:一个简单的应用程序接口,提供DirectX组件的自动安装。
(8)DirectX Media Objects:提供对数据流对象的读写支持,包括视频和音频的编解码器及其效果。
1.2 COM简介
DirectX的功能都是以COM组件的形式提供的。COM是组件对象模型(Component Object Model)的简写,它是一种协议,是对象连接和嵌入(Object Linking and Embedding)的基础。COM通常以动态链接库(DLL)的形式存在,它是建立在二进制规范上的对象。COM定义并实现了软部件(如应用程序、数据对象、控件及服务)机制,并把他们统称为"对象"。每个软部件对象由数据以及访问数据的函数组成,访问软部件对象数据的函数集合称为"接口"。在应用程序看来COM是一个黑箱,可调用COM提供的方法但不知道它的具体实现。在使用DirectShow编程时,用户创建的自定义组件必须以COM形式实现,所以必须知道如何实现COM,而一般的应用程序只需要了解COM的接口和用法就可以了。