Filter和Pin是包容还是聚合关系?怎样实现比较好?

来源:百度文库 编辑:神马文学网 时间:2024/06/03 03:36:10
发表于:2005-07-16 15:38:48
1、在Dshow里面,filter和pin都是com组件,那么,它们在一起的时候到底是什么关系?如果我们去构建一个filter的时候,包涵pin使用什么关系比较灵活?另外在使用的时候,在filter里面直接使用pin对象指针还是接口指针好?在graph里面使用com对象指针还是接口指针好些?
2、我们的filter和pin类里面实现的都是接口函数吗?有没有其他不是接口的函数用来以com对象指针的形式调用的?
对我有用[0]
丢个板砖[0]
引用
举报
管理
TOP
回复次数:9

beiguo1010
等 级:
#1楼 得分:0回复于:2005-07-16 17:06:37
大家在编写filter、pin、graph的时候,是不是从来没有认为这个是个问题?呵呵,小弟是刚刚开始学这个,而且对com也是只懂得一点点,所以提这样问题,希望大家能够帮帮忙。
对我有用[0]
丢个板砖[0]
引用
举报
管理
TOP
精华推荐:求解一道内存溢出的作业题

yicship
(yicship)
等 级:
#2楼 得分:0回复于:2005-07-21 08:54:39
是啊,还请多多赐教呀
对我有用[0]
丢个板砖[0]
引用
举报
管理
TOP
精华推荐:过年前的讨论2!关于天平称球问题的统一解法!

happydeer
(自信自省到自觉)
等 级:
14
5
3
#3楼 得分:0回复于:2005-07-21 09:10:48
1.   filter和pin既不是包容,也不是聚合。可以看成pin是filter的组成部分,是一种包含关系;pin不可能独立于filter存在。
pin一般都是在filter内部、由filter来负责创建的。这一点你可以参考baseclasses中的CTransformFilter或CTransInPlaceFilter。
在filter内部直接使用pin对象指针和使用pin接口指针都是可以的,但一般直接使用pin对象指针。pin接口指针一般是供filter以上的调用者使用的。
"在graph里面使用com对象指针还是接口指针好些? "-不太明白你的意思。如果一个接口同时被filter   graph和某个filter实现,一般使用filter   graph上的接口,比如IVideoWindow接口,filter   graph和video   renderer都实现了这个接口,但应用程序大多数情况下应该使用filter   graph上的IVideoWindow接口。
2.   filter类和pin类,有些是接口函数,有些则不是。你可以查看各个接口的定义情况,来区分哪些是接口函数,哪些是filter类/pin类自定义的函数。
对我有用[0]
丢个板砖[0]
引用
举报
管理
TOP
精华推荐:【连载之六】~~NUMA与英特尔下一代Xeon处理器学习心得!

zhaojian999
(香烟)
等 级:
#4楼 得分:0回复于:2005-07-21 09:19:51
filter是由pin所组成的,这两个关系我觉得是包含关系,使用的时候一般都是从filter中查找pin的数目,然后加以应用。
filter本身就是一种COM组件,能够实现com的接口,我觉得你无论使用filter或者是pin都应该从接口方面考虑。
对我有用[0]
丢个板砖[0]
引用
举报
管理
TOP
精华推荐:软件优化的三个层次

beiguo1010
等 级:
#5楼 得分:0回复于:2005-07-21 09:52:07
非常感谢两位老师的解答!
我问的graph中使用对象指针还是接口指针,意思是说,graph里面有很多filter,是使用指向filter的对象指针好还是使用相关的接口指针好。
再想问的是,对于filter和pin里面的非接口函数只能够使用对象指针调用了?对于filter和pin里面的非接口函数,有没有什么缺点,有什么讲究啊?另外,很多filter和pin里面还定义了友元类,这个使用上有什么讲究吗?
再次谢谢两位老师。
对我有用[0]
丢个板砖[0]
引用
举报
管理
TOP
精华推荐:i7 cpu 以及计算机系统赏析——高清电脑玩家必看!(转)

happydeer
(自信自省到自觉)
等 级:
14
5
3
#6楼 得分:0回复于:2005-07-21 10:29:45
我觉得你没有明白COM的设计思想:COM组件是客户程序通过CLSID来创建的,一般情况下,客户程序不知道实例化这个组件的是哪个类,客户程序不能得到COM对象指针并加以直接使用;客户程序和COM组件通讯的唯一、正确途径应该是COM组件上实现的接口。
“很多filter和pin里面还定义了友元类”,这些是filter组件内部实现问题;对于filter组建的使用者来说,根本不需要关心这些问题。
对我有用[0]
丢个板砖[0]
引用
举报
管理
TOP

beiguo1010
等 级:
#7楼 得分:0回复于:2005-07-21 12:02:38
谢谢老师指点。我现在是自己设计graph   manager,所以不知道该不该用指向com组件对象的指针。老师说得很对,我对com还不是很熟悉,所以忽略了com最基本的原则。顺便问问老师,使用dshow设计软件的最后的发展方向是什么?是不是只是用它来组织自己的软件架构就可以了?
对我有用[0]
丢个板砖[0]
引用
举报
管理
TOP

zhaojian999
(香烟)
等 级:
#8楼 得分:0回复于:2005-07-21 14:25:35
如果你只是使用dshow设计软件,那么你要了解一些com的基础知识就可以了,不用过多的关注com的东西。如果你是开发filter的话,恐怕你就要多花点时间来学习com了。如果是前者的话可以说你最后的方向就是能够成功构造filtergrahp就可以了。
对我有用[0]
丢个板砖[0]
引用
举报
管理
TOP

httpaspjspphp
(小杨大刀)
等 级:
#9楼 得分:0回复于:2005-07-22 17:58:00
《COM技术内幕》里说得很明白
都是很明确的概念