以下的文章是我在学习DirectShow的过程中翻译自DirectX 9 SDK的帮助文档,希望对大家了解和编写自己的filter等组件时有所帮助。翻译文档的内容我会陆续发到网上。
 

1.       DirectShow基础类库概述<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

Microsoft® DirectShow®基础类库是一系列的C++类和实用函数的集合,这些使用函数的设计的目的是为了实现DirectShow的filter。对应用程序开发人员来说,某些帮助类也是非常有用的。
本篇文章描述了这个基础类库,包含了以下一些部分:
  • 如何使用DirectShow基础类库
  • Introduction to the Filter Base Classes
  • Base Class Reference
  • Utility Functions
  • Debugging Utilities
(SDK 根目录)\Samples\C++\DirectShow\BaseClasses
DirectShow的基础类库的工作空间的名字叫做BaseClasses.dsw。这个工程生成了两个版本的库文件,一个零售版本——Strmbase.lib,一个调式版本的库文件——Strmbasd.lib。在你的自己的工程里面,如果你想使用基本类库,你必须包含Streams.h这个头文件。你的应用程序既可以链接Strmbase.lib or to Strmbasd.lib,这取决于你生成的程序的版本,即你是生成一个零售版本还是一个调试版本。
下面这个表格总结了你需要的文件:
工作空间
BaseClasses.dsw
零售版库文件
Strmbase.lib
调试版本库文件
Strmbasd.lib
头文件
Streams.h

 
  • PERF: 保留字符。不要使用这个预处理符号。
  • VFWROBUST: 在零售版本中启用指针验证。在调试版本周,这个并不是必须定义VFWROBUST宏。
下面的章节概述了大多数最重要的基本类:

3.1.       COM 对象库

下面的这些类用来支持COM对象的创建:
描述
CBaseObject
基本对象类。
CUnknown
实现了IUnknown 接口。
大多数的DirectShow类派生于CBaseObject。这个类提供了一个在在Dll文件中的活动对象计数器,在运行时的调试帮助。在调试版本中,如果DLL没有被加载,但是对象计数器大于0,则被断言失败。这样就可以很容易的追踪由引用计数引起的内存泄露问题。
所有的这些基本类支持从CUnknown 中派生出来的COM接口,CUnknown派生于CBaseObjectCUnknown类支持引用计数、QueryInterface、聚合。

3.2.       Filter and Pin 类

下面的这些类支持DirectShow filter和pin对象的创建:
描述
CBaseFilter
Filter的基础类,实现了IBaseFilter接口。
CBasePin
Pin(接脚)的基本类,实现了IPin和IQualityControl接口。
CBaseInputPin
输入pin的基本类,使用了本地内存传输。实现了IMemInputPin接口。这个接口派生于CBasePin。
CBaseOutputPin
输出pin的基本类,使用了IMemInputPin连接。这个类派生于CBasePIn。
下面的这些类在创建专门的filter有一些帮助:
描述
CSource
创建源filter的基本类。这个基本类用来创建推源,但是不适合用来创建一个拉源(参考推模式、拉模式),比如说文件读取器。如果要创建一个输出pin,使用CSourceStream类。
CTransformFilter
变换filter的基本类。这个类执行了一个数据的副本的拷贝。这个类的接脚类(pin)是CTransformInputPin和CTransformOutputPin。
CTransInPlaceFilter
变换filter的基本类,这个类不拷贝数据。这个类在向下游传输数据之前,直接执行输入数据处理。这个类的接脚是CTransInPlaceInputPinCTransInPlaceOutputPin
CVideoTransformFilter
视频变换filter基本类,这个类派生于CTransformFilter然后添加了一些质量控制。
CBaseRenderer
渲染filter的基本类。输入接脚(Pin)是CRendererInputPin
CBaseVideoRenderer
视频渲染的基本类,这个类派生于CBaseRenderer
要使用这些类,你必须要派生你自己的类,然后在你自己的类里面编写代码来实现filter里面的功能。越专业的基类,你要在你自己的派生类里面要书写的代码就越少。

3.3.       辅助对象

下面的这些类实现了一些用在filter和pin中的辅助对象。这些类中的大多数无需从中派生,可以直接使用。
类名
描述
CPullPin
在分析器上的辅助对象输入接脚。支持IAsyncReader推源的连接器
COutputQueue
输出接脚的辅助对象,可以传送一个样本队列(queue samples )到一个工作线程(worker thread)。
CSourceSeeking
在一个有着准确外接接脚的源filter里面实现一个位置查找的辅助对象。(这个类并不是为有多接脚的filter设计的,比如说像解析器)
CEnumPins
在一个filter上为列举接脚的用的枚举对象。实现了IEnumPins接口。
CEnumMediaTypes
这是一个用于在接脚中枚举最优先的媒体类型的枚举对象,这个对象实现了IEnumMediaTypes接口。
CMemAllocator
内存分配器对象,实现了IMemAllocator接口。
CMediaSample
媒体样本对象。实现了IMediaSample2接口。
CBaseReferenceClock
引用时钟的基本类。实现了IReferenceClock接口。
CMediaType
辅助对象用来操作AM_MEDIA_TYPE数据结构。

转载于:https://blog.51cto.com/zjyzjy/78157

DirectShow基础类库开发参考文档相关推荐

  1. [Web开发] IE8 网页开发参考文档

    IE8在兼容Web 标准方面做了巨大的改进,所以和以往的IE版本有非常大的差异. 以下是一些文档帮助Web 开发者了解IE8 内核引擎的变化,以便开发出更好更炫的网页. HTML and CSS Su ...

  2. WeChat小程序·微信登录·开发参考文档

    文章目录 1 WeChat小程序登录业务开发 1.1 前期准备 1.2 微信登录流程 1.2.1 官方参考文档 1.2.2 登录流程时序图 1.2.3 步骤分析 1.2.4 重要方法说明 1.2.5 ...

  3. spark+openfire即时通讯工具二次开发参考文档

    摘自:  http://gmd20.blog.163.com/blog/static/168439232010527525542/ 其中Spark是开源的基于XMPP协议的即时通讯工具,公司最近也换到 ...

  4. 小程序开发配置接口域名提示:不在以下 request 合法域名列表中,请参考文档

    小程序开发配置接口域名提示:不在以下 request 合法域名列表中,请参考文档:https://developers.weixin.qq.com/miniprogram/dev/api/networ ...

  5. hibernate参考文档

    http://docs.jboss.org/hibernate/annotations/3.4/reference/zh_cn/html_single/#d0e224 Hibernate Annota ...

  6. RxJava 参考文档

    /**************************************************************** RxJava 参考文档* 说明:* 最近无意中发现RxJava这个好 ...

  7. mpvue 从零开始 女友拉黑了我 5 不在以下request 合法域名列表中,请参考文档

    上一篇,才调通了接口,试了几次,都成功,突然,微信报错了. VM6239:1 https://www.easy-mock.com 不在以下 request 合法域名列表中,请参考文档:https:// ...

  8. htt:// ************不在以下 request 合法域名列表中,请参考文档:******************************

    http:// ****不在以下 request 合法域名列表中,请参考文档:https://developers.weixin.qq.com/miniprogram/dev/framework/ab ...

  9. dita文档_使用DITADoclet和DITA API专业化生成DITA Java™API参考文档

    dita文档 2009年12月11日修订说明:在" 目标"和" 安装org.dita.dost插件 "标题下添加了两个指向可下载资源的链接. 2014年3月7日 ...

  10. linux自动化脚本制作参考文档

    linux自动化脚本制作参考文档 一.环境部分 1.0.启动盘制作 前提:1个8G以上的U盘,想要安装的系统ISO镜像 参考连接: 1.windows系统 #打开'运行' => win + r ...

最新文章

  1. android studio so文件的添加
  2. 【Linux】neocomplcache disabled: “sudo vim“ is detected and $HOME is set to your user‘s home
  3. UML Distilled 3rd 学习笔记
  4. 【OpenMP实现】任意线程数并行化快排结合Merge排序100w--10线程下只用0.06s
  5. 全球及中国斜交胎市场品牌竞争形势与投资策略分析报告2022年
  6. SpringMVC中的数据校验
  7. 腾讯天美六位TA:技术美术这份职业会长期存在吗?
  8. 打开服务器数据库文件,如何打开服务器中的数据库文件
  9. OpenStack不行了吗?悉尼峰会,OpenStack的白城反击战?
  10. oracle segment undo_Oracle Undo工作原理
  11. vue 全局函数的 定义与任意调用 (代码篇)
  12. 自定义帆软报表的导出
  13. 信号检测与估计c语言,清华大学出版社-图书详情-《信号检测与估计(第2版)》...
  14. HTML对字体的所有操作详解(经典)
  15. CKA认证考题+解析
  16. 我是如何面试iOS开发者的?
  17. appstore软件销售数据统计分析软件Prismo
  18. 易语言突破百度云防护
  19. 2021最新css3面试题理论,前端css面试题,移动端面试题理论。
  20. EigenGame:将主成份分析(PCA)作为一个博弈游戏

热门文章

  1. 牛客多校第九场H Cutting Bamboos(主席树 区间比k小的个数)题解
  2. Java面试题中的Redis大合集,所有你想找的都在这里!
  3. PAT B1035 插入与归并 (25 分)
  4. 为ScrollView增加圆角的三种方式,及自定义属性【在Linearlayout中新增ScrollView支持滚动 后续】...
  5. sizeof,真正终结版GCC与VC
  6. 怎样申请 Google Map apiKey
  7. Silverlight学习之贪吃蛇游戏
  8. ATL接口映射宏详解
  9. 一篇文章搞定Python多进程
  10. 爬虫告诉你, 互联网大数据行业有多赚钱!