directshow学习笔记第一天,第一章

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组件的注册信息。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值