分享

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

 haodafeng_org 2010-10-28
发表于:2005-07-16 15:38:48
1、在Dshow里面,filter和pin都是com组件,那么,它们在一起的时候到底是什么关系?如果我们去构建一个filter的时候,包涵pin使用什么关系比较灵活?另外在使用的时候,在filter里面直接使用pin对象指针还是接口指针好?在graph里面使用com对象指针还是接口指针好些? 
2、我们的filter和pin类里面实现的都是接口函数吗?有没有其他不是接口的函数用来以com对象指针的形式调用的?
#1楼 得分:0回复于:2005-07-16 17:06:37
大家在编写filter、pin、graph的时候,是不是从来没有认为这个是个问题?呵呵,小弟是刚刚开始学这个,而且对com也是只懂得一点点,所以提这样问题,希望大家能够帮帮忙。
#2楼 得分:0回复于:2005-07-21 08:54:39
是啊,还请多多赐教呀
  • happydeer用户头像
  • 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类自定义的函数。
#4楼 得分:0回复于:2005-07-21 09:19:51
filter是由pin所组成的,这两个关系我觉得是包含关系,使用的时候一般都是从filter中查找pin的数目,然后加以应用。 
filter本身就是一种COM组件,能够实现com的接口,我觉得你无论使用filter或者是pin都应该从接口方面考虑。
#5楼 得分:0回复于:2005-07-21 09:52:07
非常感谢两位老师的解答! 

我问的graph中使用对象指针还是接口指针,意思是说,graph里面有很多filter,是使用指向filter的对象指针好还是使用相关的接口指针好。 

再想问的是,对于filter和pin里面的非接口函数只能够使用对象指针调用了?对于filter和pin里面的非接口函数,有没有什么缺点,有什么讲究啊?另外,很多filter和pin里面还定义了友元类,这个使用上有什么讲究吗? 

再次谢谢两位老师。
  • happydeer用户头像
  • happydeer
  • (自信自省到自觉)
  • 等 级:
  • 14

    5

    3

#6楼 得分:0回复于:2005-07-21 10:29:45
我觉得你没有明白COM的设计思想:COM组件是客户程序通过CLSID来创建的,一般情况下,客户程序不知道实例化这个组件的是哪个类,客户程序不能得到COM对象指针并加以直接使用;客户程序和COM组件通讯的唯一、正确途径应该是COM组件上实现的接口。 

“很多filter和pin里面还定义了友元类”,这些是filter组件内部实现问题;对于filter组建的使用者来说,根本不需要关心这些问题。
#7楼 得分:0回复于:2005-07-21 12:02:38
谢谢老师指点。我现在是自己设计graph   manager,所以不知道该不该用指向com组件对象的指针。老师说得很对,我对com还不是很熟悉,所以忽略了com最基本的原则。顺便问问老师,使用dshow设计软件的最后的发展方向是什么?是不是只是用它来组织自己的软件架构就可以了?
#8楼 得分:0回复于:2005-07-21 14:25:35
如果你只是使用dshow设计软件,那么你要了解一些com的基础知识就可以了,不用过多的关注com的东西。如果你是开发filter的话,恐怕你就要多花点时间来学习com了。如果是前者的话可以说你最后的方向就是能够成功构造filtergrahp就可以了。
#9楼 得分:0回复于:2005-07-22 17:58:00
《COM技术内幕》里说得很明白 
都是很明确的概念 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多