Graph 的构建, 不是完全手动连接的,如何避免 某些 Filter 被自动连接上?

definegg 2009-04-03 11:03:38
Graph 的构建, 不是完全手动连接的,如何避免 某些 Filter 被自动连接上, 已知这些 不想连接的 Filter 的 GUID ,

---------自动连接排除 某些Filter 的方法?
...全文
136 点赞 收藏 16
写回复
16 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
zhoumingjie 2009-05-02
我觉得最靠铺的办法是参考media player classic,自己实现一套连接流程以及filter的管理流程
回复
goodheartppl 2009-04-30
有一个超级简单的版本,我已经试过了 可行

先把你那个不需要FILTER的MERIT值降低到最低,或者把注册表的信息删掉

等连完了再恢复就可以了
回复
yi7900 2009-04-30
IFilterGraph::ConnectDirect( IPin *ppinOut, IPin *ppinIn, const AM_MEDIA_TYPE *pmt);
这样可以不使用智能连接功能
回复
ninemall 2009-04-21
..........先在graphedit里测试好来再搞咯
回复
chiwa737 2009-04-15
同意楼上
回复
Oversense 2009-04-10

这个真是超级简单了

在你 render 之前

调用 regsvr32 xxx.ocx /u 把你看不顺眼的dll/ocx unregsvr掉,

然后

render之后, regsvr32回来,就好了
回复
jinlking 2009-04-10
[Quote=引用 9 楼 Oversense 的回复:]

这个真是超级简单了

在你 render 之前

调用  regsvr32 xxx.ocx /u 把你看不顺眼的dll/ocx unregsvr掉,

然后

render之后, regsvr32回来,就好了
[/Quote]

很强悍的方法!
回复
UDX协议 2009-04-10
to 楼上。

如果只是应付的话,可以。

但是实际应用中,根本不可能用你的方法。

不且说,你都能找到相应的dll/ax,如果你/u以后,你的应用程序如果异常退出会有什么后果?

你的软件和病毒没有区别了----破坏系统。
回复
goodheartppl 2009-04-09
我也有过和你一样的问题

我后来的解决方案是 先手动连接自己的FILTER
然后剩下的用 RENDER PIN

然后把不想连的FILTER MERIT 值降低
把想连的FILTER 的MERIT 值增加
回复
zhoumingjie 2009-04-09
这个应该比较简单,你可以仿照mpc的FGManager做个filter的封装,然后自己来确定优先级
回复
mumuniuniu 2009-04-09
goodheartppl的方法很实用,我也一直用这种方法,
在更改优先级后可能需要重启才能有效
回复
hust_terry 2009-04-04
这种要求有点费常规,关注解决方案。
回复
UDX协议 2009-04-03
如果在这个不想联接的filter前面的filter是你自己的filter的话,有一种方法就是实现IStreamBuilder。

如果不是,没有较简单的方法,
不过你可以这样,你先让智能联接完成,然后再枚举每个filter,查看是否有你不想要的filter,如果有的话,就去掉,加进你想要的filter,再重新联接起来就行了。算是间接满足你的要求。
回复
jinlking 2009-04-03
DShow会优先考虑添加到Graph中的filter,因此需要特定的filter可以预先添加。
但是排除某些filter,这个可能与filter注册信息中的优先级相关吧,merit
回复
UDX协议 2009-04-03
如果自己实现graphbuilder,会疯的。
回复
greenabc 2009-04-03
重写 RenderPin RenderFile RenderEx 等方法 , CLSID_FilterGraph 创建的对象的,
但是那个对象的类,没注意过 ,微软是不是给出了源码,如果没有的话 , 这个对象好像接口上没有这个方法,就需要自己实现一个 Graph Builder 了 ,对不
回复
相关推荐
发帖
多媒体/流媒体开发
创建于2007-08-27

2451

社区成员

专题开发/技术/项目 多媒体/流媒体开发
申请成为版主
帖子事件
创建了帖子
2009-04-03 11:03
社区公告
暂无公告