directshow学习笔记第一天,第一章
来源:互联网 发布:数据库系统怎么学 编辑:程序博客网 时间:2024/05/29 19:37
directshow 功能
为了让应用程序开发人员从复杂的数据传输,硬件差异,同步性等工作中解脱出来。
directshow系统构成
directshow系统位于应用曾,使用一种filter graph的模型管理整个数据流的处理过程。参与数据处理的各个功能模块叫做filter,各个filter在filter graph中按一定的顺序连接成一条流水型协同工作。
filter分类
1、source filters:负责获取数据,数据源可以是文件,因特网计算机里的采集卡(WDM驱动或者VFW驱动)数字摄像机等
2、transform filters:数据格式转换,数据的分离/合成,解码/编码等
3、Rendering filters:负责数据的最终去向,数据送给显卡,声卡进行多媒体掩饰,输出到文件存储。
1.3Com编程基础
COM规范规定,任何组建或者接口都需要从IUnknow接口中继承而来,从IUnknown定义3个重要函数,QueryInterface,Addref和Release,
1.QueryInterface负责对象上的接口查询,
2、Addref负责增加引用计数,
3、Release用于减少引用计数。
4、引用计数解决了组建对象生命周期问题,即Com组建什么时候被销毁,由谁来销毁的问题。
PS,Com组件一般会采用一个“自销毁”的策略,可以看到很多IUnknown:Release函数的实现,当引用计数为0时,组建对象会调用Delete this指令。
Com组件实际上是一个C++类,对于组件的外部使用者来说,这个类名一般不可知,那么如何创建这个类的实例,COM规范规定,每个组建都必须实现一个与之相对应的类工厂(Class factory),类工厂也是一个COM组件,实现IClassfactory接口,在IClassfactory接口函数CreateInstance中,才能使用new操作生成一个Com组建类对象的实例。
Com组件类型
1、进程内组建,
2、本地进程组件
3、远程组件
Filter一般是一种进程内组建,以DLL的形式提供服务。
一个典型的自注册COM组建DLL所必需的5导出函数如下:
1、DLLMAIN:DLL入口函数(DirectShow实现的是DLLEntryPoint)
2、DLLGetClassObject:用于获得类工厂指针
3、DllCanUnloadNow:系统空闲时会调用这个函数,以确定是否可以卸载DLL
4、DLLRegisterServer:将COM组件注册到注册表中
5、DllUnregisterServer:删除注册表中COM组件的注册信息。
- directshow学习笔记第一天,第一章
- 第一天学习笔记
- 第一天学习笔记
- 学习笔记第一天
- PHP 第一天学习笔记
- COM学习笔记(第一天)
- PHP第一天学习笔记
- wxpython 学习笔记 第一天
- android学习第一天笔记
- WinCE学习笔记---第一天
- Android学习笔记: 第一天
- java学习笔记--第一天
- 学习笔记 EXTJS 第一天
- axis2学习笔记 第一天
- Java学习第一天笔记
- mahout 学习第一天笔记
- JAVA学习第一天笔记
- processing 学习第一天笔记
- c++如何创建窗体程序,求详细步骤(win32)
- My97DatePicker学习
- angular 中的 DOM 操作
- cocos2dx遮罩失效的解决与分析
- C语言面试题-2
- directshow学习笔记第一天,第一章
- NameNode中几个关键的数据结构
- 删除所有.svn/.git
- 有用的Linux面试问题及答案
- JSP程序设计从入门到精通(CHM)
- python之UTF-8解决方案
- XMLHttpRequest Level 2 使用指南
- 详细介绍JSP技术的两种架构模型
- JAVA中的内省