以下的文章是我在学习DirectShow的过程中翻译自DirectX 9 SDK的帮助文档,希望对大家了解和编写自己的filter等组件时有所帮助。翻译文档的内容我会陆续发到网上。
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1. DirectShow基础类库概述<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
Microsoft® DirectShow®
基础类库是一系列的C++类和实用函数的集合,这些使用函数的设计的目的是为了实现DirectShow的filter。对应用程序开发人员来说,某些帮助类也是非常有用的。
本篇文章描述了这个基础类库,包含了以下一些部分:
如果你想使用Microsoft® DirectShow®基础类库,你必须生成和链接基础类库的库文件,这些库文件位于:
(SDK 根目录)
\Samples\C++\DirectShow\BaseClasses
DirectShow
的基础类库的工作空间的名字叫做BaseClasses.dsw。这个工程生成了两个版本的库文件,一个零售版本——Strmbase.lib,一个调式版本的库文件——Strmbasd.lib。在你的自己的工程里面,如果你想使用基本类库,你必须包含Streams.h这个头文件。你的应用程序既可以链接Strmbase.lib or to Strmbasd.lib,这取决于你生成的程序的版本,即你是生成一个零售版本还是一个调试版本。
下面这个表格总结了你需要的文件:
当你在你的工程中包含了Streams.h这个头文件,下面的与处理符号就有了特殊的意义:
这篇文文章描述了Microsoft DirectShow基本类库,这个库是为filter开发人员设计的,但是应用程序开发人员可能会找到一些有帮助的类文件,或者调试应用程序时有些帮助。但是基本库类并不是DirectShow程序必须的。
下面的章节概述了大多数最重要的基本类:
3.1. COM 对象库
下面的这些类用来支持COM对象的创建:
大多数的DirectShow类派生于CBaseObject。这个类提供了一个在在Dll文件中的活动对象计数器,在运行时的调试帮助。在调试版本中,如果DLL没有被加载,但是对象计数器大于0,则被断言失败。这样就可以很容易的追踪由引用计数引起的内存泄露问题。
所有的这些基本类支持从CUnknown 中派生出来的COM接口,CUnknown派生于CBaseObject。CUnknown类支持引用计数、QueryInterface、聚合。
下面的这些类支持DirectShow filter和pin对象的创建:
下面的这些类在创建专门的filter有一些帮助:
要使用这些类,你必须要派生你自己的类,然后在你自己的类里面编写代码来实现filter里面的功能。越专业的基类,你要在你自己的派生类里面要书写的代码就越少。
下面的这些类实现了一些用在filter和pin中的辅助对象。这些类中的大多数无需从中派生,可以直接使用。
|
转载于:https://blog.51cto.com/zjyzjy/78157