社区
多媒体/流媒体开发
帖子详情
关于Filter的释放问题,你们有没有遇到过?
ShutDOT
2008-10-21 06:00:03
例如用ffdshow.ax解码视频进行回放,播放完毕后Stop遍历所有FILTER依次RemoveFilter,对所有FILTER调用release后ffdshow.ax模块依然在当前应用程序进程中(只有一个实例主线程播放,不存在多个引用计数),这种情况大家遇到过吗?同样的问题存在于很多解码器,包括GraphEdit创建完解码链路后清理掉Filter也无法正常freelibrary掉模块!郁闷啊,不释放就不能删除换新的!
...全文
565
38
打赏
收藏
关于Filter的释放问题,你们有没有遇到过?
例如用ffdshow.ax解码视频进行回放,播放完毕后Stop遍历所有FILTER依次RemoveFilter,对所有FILTER调用release后ffdshow.ax模块依然在当前应用程序进程中(只有一个实例主线程播放,不存在多个引用计数),这种情况大家遇到过吗?同样的问题存在于很多解码器,包括GraphEdit创建完解码链路后清理掉Filter也无法正常freelibrary掉模块!郁闷啊,不释放就不能删除换新的!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
38 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lztsgx
2010-11-10
打赏
举报
回复
把所有的PINS断开就行了。
joyjjjz
2009-06-12
打赏
举报
回复
d
ShutDOT
2008-11-16
打赏
举报
回复
无满意回复结贴,辛苦分送给大家!
ShutDOT
2008-11-06
打赏
举报
回复
jartru:
看来确实不是我程序中COM对象(filter, pin)没有正常release导致ffdshow.ax不能释放!
屏蔽了vmrplayer例子中的 QzUninitialize();调用后ffdshow.ax也无法释放了。
再次陷入困境......
Jartru
2008-11-06
打赏
举报
回复
调用CoUninitialize()后会清理强制COM对象,这样看来确实是你程序中COM对象(filter, pin)没有正常release导致ffdshow.ax不能释放。
如果在 例子1D:\dxsdk\Samples\C++\DirectShow\VMR\VMRPlayer ,中close()里不调用CoUninitialize()是否ffdshow.ax也能释放呢?是不是CoFreeUnusedLibraries()起了作用?
ShutDOT
2008-11-05
打赏
举报
回复
这个帖不能就这么沉了!!
ccw157
2008-11-05
打赏
举报
回复
vmrplayer里面CloseMovie里对那些接口的释放,返回值好像都不是0。
我现在也碰到这种问题,在程序中起了若干个线程做同样的事,在线程中coinitialize()、创建graph,加载过滤器,然后退出前释放掉graph,CoUninitialize。其中一个过滤器是自己写的,第一个线程退出时,过滤器的析构函数未被调用,但以后每次释放都会调用析构函数,不知道是为什么。
而且释放过滤器时EnumFilters只能枚举到render。
ShutDOT
2008-11-05
打赏
举报
回复
Jartru 一句话惊醒梦中人,竟然之前没有跟DX SDK的例子比较,比较后的结果更让我吐血,大家上眼吧:
例子1
D:\dxsdk\Samples\C++\DirectShow\VMR\VMRPlayer
点击close菜单后ffdshow.ax被正常卸载,惊喜!以为有救了!可但是...
例子2
D:\dxsdk\Samples\C++\DirectShow\VMR\Renderless
点击close菜单后ffdshow.ax无法卸载,晕倒
那么如此那就找茬吧,最后发现例子1竟然在close时调用了
CoUninitialize()和CoFreeUnusedLibraries()而例子2的调用是随当前实例的生命周期的生死所以没能卸载掉ffdshow.ax
现在来改我的那个程序,原来的CoInitialize是在app的InitInstance中调用,CoUninitialize在ExitInstance中调用,那么挪到CDXGraph类的构造函数和析构函数里,so easy,ffdshow.ax可以正常释放了。
但是靠这种方法我在主线程中播放结束后难道还要被迫CoUninitialize?其他COM调用可就遭殃了,或许CoUninitialize不是卸载ffdshow.ax的唯一办法
Jartru
2008-11-05
打赏
举报
回复
用DShow SDK里的sample来播放同一个文件,看看是否有同样的问题?
ShutDOT
2008-11-03
打赏
举报
回复
直接renderfile也不是不可以,但是ffdshow依然不会被free,用PE查看一直在进程中加载!
UDX协议
2008-11-01
打赏
举报
回复
那你就应该只接renderfile,由用户系统内解码器来决定。一般喜欢看电影的用户都有相关的解码器。
UDX协议
2008-10-31
打赏
举报
回复
如果是为了播放mp3有必要这么复杂么?
一般的大众格式,应该不局限某种编码,你应该比较通用。
如果用户那里没有安装相应解器是客户的事情。
你也可以把你必须要的filter随产品一起发布。
czbever
2008-10-31
打赏
举报
回复
这种情况我也遇到过 可能是pin没释放或者什么的
ShutDOT
2008-10-31
打赏
举报
回复
不仅仅回放MP3,很多媒体类型都要支持。
且如果让用户播放一个2M的小视频给用户安装一个20M的解码器包会非常影响用户体验,我要动态更新解码器,发现当前解码器解码失败时就下载我准备好的,由于FFDSHOW的无法释放造成必须重新启动程序才能重新加载FFDSHOW,问题是这不正常,我想微软也不是这样设计的!
UDX协议
2008-10-30
打赏
举报
回复
我有装暴风,你的source和解码器什么的都创建成功。就是联接不成功。
ShutDOT
2008-10-30
打赏
举报
回复
暴风影音1才行,暴风II是没有注册FILTER的,另外FFDSHOW还要打开对FLV的解码,在注册表HKEY_LOCAL_MACHINE\SOFTWARE\GNU\ffdshow\flv1设置为1 或者在GraphEdit里右键FFDSHOW DECODER的属性也能设置。
ShutDOT
2008-10-29
打赏
举报
回复
To: Jartru 请问是哪个filter没释放呢?
ShutDOT
2008-10-29
打赏
举报
回复
要安装FFDSHOW,FLVSPLITTER,暴风,KMP里都找得到注册一下就可以
UDX协议
2008-10-29
打赏
举报
回复
我试过你的代码,好象联接不能成功,在 hr = mGraph->Connect(pPinOut,pPinIn);里不能成功。
我自己改成rendfile没有问题。
或者手动联接都没有问题。
ShutDOT
2008-10-28
打赏
举报
回复
每帖只能加分一次,此帖已加过分,不能再加了
加分不是问题,开了个新帖
http://topic.csdn.net/u/20081028/09/2bb30218-9169-49dd-b117-1c93f25003e6.html
明天给新帖再加100
加载更多回复(18)
IDEA版JavaWeb从入门到精通之
Filter
过滤器第15天
课程涵盖:Servlet程序、
Filter
过滤器、Listener监听器、JSP页面、EL表达式、JSTL标签库、jQuery框架、Cookie技术、Session会话、JSON使用、Ajax请求等全部Web开发核心技术点,并在讲解知识点过程中带领大家完成一个...
面试
问题
总结
问的比较多的是其实还是核心功能模块的开发细节
问题
,比如你们考虑到并发
问题
了没有?你们是怎么解决的?用xx技术解决有什么优点/缺点?
遇到
这种
问题
的时候不要慌,如果会就直接说,如果不会可以先想一会儿,最好...
运维工程师面试的经历及面试相关
问题
转载2018年1月4号面试笔者其实没有想到去面试,只是在智联上更新了一下简历,就陆陆续续接到很多猎头的邮件和电话,实在是没准备好要去面试,就推掉了几家公司的面试了。正因为笔者也很久没有面试了,笔者也想去面试...
面试题--网络
面试
遇到
的
问题
: 美团: 1. 网络七层体系结构 滴滴: 1.网络体系结构(七层、五层、TCP/Ip),各层的作用和协议。 2.TCP/IP在哪一层 3. TCP/UDP区别和应用场景 4. TCP如何保证它的可靠性 5. TCP如何面向...
数仓业务相关的
问题
数仓业务相关
问题
多媒体/流媒体开发
2,543
社区成员
20,281
社区内容
发帖
与我相关
我的任务
多媒体/流媒体开发
专题开发/技术/项目 多媒体/流媒体开发
复制链接
扫一扫
分享
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章