Filter Graph的创建,IFilterGraph2, IGraphBuilder, IcaptureGraphBuiler2的区别
来源:互联网 发布:数据库建立一对一关系 编辑:程序博客网 时间:2024/05/22 01:54
操作filter之前,肯定要创建filter graph。几乎所有的介绍directshow的书和例子都用了 IGraphBuilder, IcaptureGraphBuiler2
这两个接口,当然IFilterGraph也有,少用。
这三者有什么区别?
【1】IFilterGraph2,IcaptureGraphBuiler2这两个filter的CLSID是不一样的。IFilterGraph2,IGraphBuilder是一样 的。
IFilterGraph2,IGraphBuilder注册在CLSID_FilterGraph下,IcaptureGraphBuiler2注册在CLSID_CaptureGraphBuilder2下。
【2】对于IFilterGraph2来说,还有一个IFilterGraph,IFilterGraph3.
他们的继承关系为:
IFilterGraph——>IGraphBuilder——>IFilterGraph2——>IFilterGraph3
一般使用IGraphBuilder比较多
【3】如果我们仅仅是显示预览UVC,可以只使用IFilterGraph2,通过pFilterGraph2->AddSourceFilterForMoniker(),
用Moniker指针将filter添加到graph,则不必创建IcaptureGraphBuiler2这个接口。
【4】IcaptureGraphBuiler2是一个专门用来进行视频,音频捕捉的增强型接口;如果要特别的编解码,用它就很方便。
但为什么一般创建了IcaptureGraphBuiler2,还要创建IGraphBuilder呢?
这是因为我们在预览视频时处理播放,暂停,停止这些动作,需要用到IGraphBuilder,而这些功能IcaptureGraphBuiler2
是没有的,所以需要而这协调处理。
IcaptureGraphBuiler2创建后,要将IGraphBuilder的指针与他关联:
这两个接口,当然IFilterGraph也有,少用。
这三者有什么区别?
【1】IFilterGraph2,IcaptureGraphBuiler2这两个filter的CLSID是不一样的。IFilterGraph2,IGraphBuilder是一样 的。
IFilterGraph2,IGraphBuilder注册在CLSID_FilterGraph下,IcaptureGraphBuiler2注册在CLSID_CaptureGraphBuilder2下。
【2】对于IFilterGraph2来说,还有一个IFilterGraph,IFilterGraph3.
他们的继承关系为:
IFilterGraph——>IGraphBuilder——>IFilterGraph2——>IFilterGraph3
一般使用IGraphBuilder比较多
【3】如果我们仅仅是显示预览UVC,可以只使用IFilterGraph2,通过pFilterGraph2->AddSourceFilterForMoniker(),
用Moniker指针将filter添加到graph,则不必创建IcaptureGraphBuiler2这个接口。
【4】IcaptureGraphBuiler2是一个专门用来进行视频,音频捕捉的增强型接口;如果要特别的编解码,用它就很方便。
但为什么一般创建了IcaptureGraphBuiler2,还要创建IGraphBuilder呢?
这是因为我们在预览视频时处理播放,暂停,停止这些动作,需要用到IGraphBuilder,而这些功能IcaptureGraphBuiler2
是没有的,所以需要而这协调处理。
IcaptureGraphBuiler2创建后,要将IGraphBuilder的指针与他关联:
pCaptureGraphBuiler2->captureGraphBuiler2(pGraphBuilder).
http://blog.sina.com.cn/s/blog_60d57680010183kz.html
0 0
- 【Directshow】Filter Graph的创建,IFilterGraph2, IGraphBuilder, IcaptureGraphBuiler2的区别
- Filter Graph的创建,IFilterGraph2, IGraphBuilder, IcaptureGraphBuiler2的区别
- Filter Graph的动态构建
- 数据流在Filter Graph里的流动
- Filter Graph的动态重建技术
- Filter Graph的事件交互机制
- Filter Graph和它的组件
- 数据流在Filter Graph里的流动
- 自建DirectShow Filter Graph的流程
- IGraphBuilder
- IGraphBuilder
- IGraphBuilder::Render() 引发的错误:0x80040154 (REGDB_E_CLASSNOTREG)
- filter、servlet的区别
- DirectShow--过滤器图表(Filter Graph)和它的组件
- 关于在GraphEdit中显示应用程序的Filter graph
- 获得filter的CLSID并加入到graph中
- 获得filter的CLSID并加入到graph中
- include-filter和exclude-filter的区别
- 左右两列式布局,等高同步
- oracle 去掉字段中空格
- COMODO杀毒软件下载
- android开发实例,欢迎界面,打电话,发短信
- sublime text 3 搭建python开发环境报pylint_path路径的问题
- Filter Graph的创建,IFilterGraph2, IGraphBuilder, IcaptureGraphBuiler2的区别
- textField的光标是从1开始的
- wordpress查看文章内是否有缩列图
- 8个超酷炫仿苹果应用的HTML5动画
- 交换机arp只能查询本身三层所配置的网段
- 基类的指针指向派生类的对象
- CSS3——字体font
- 秒杀多线程第四篇 一个经典的多线程同步问题
- ubuntu下删除桌面主文件夹