向IGraphBuilder 插入自己的filter后 播放vob文件的不稳定问题(其它文件无碍)

北漂17载 2006-01-04 06:29:05
我自己写了个filter 插到IGraphBuilder中视频解码链路的最后端以试图截获bmp数据,但我发现在播放dvd的vob文件时 有些系统解dvd的videodecoder的filter (如 fraumhofer video decoder)在我通过graphfilter将程序停止 并释放对象后 在播放dvd文件的时候视频的fraumhofer video decoder 不会呗自动插进去了 其它格式文件没问题 .
还有个问题 就是我的filter 不能delete,会出错(我得filter 是一个类 new 以后addfilter 进去的)
...全文
121 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
北漂17载 2006-01-12
  • 打赏
  • 举报
回复
问题找到了 是在去pin的时候 ConnectedTo 函数取到的pin没release 所以视频解码filter没有被释放
多谢各位了 尤其 是 rageliu 我们交个朋友吧 我的 qq:50027482
结贴
rageliu 2006-01-11
  • 打赏
  • 举报
回复
加入你自己的filter时用了AddRef()是不是??结束时对应的有个Release(),接下来才delete
rageliu 2006-01-11
  • 打赏
  • 举报
回复
delete你的filter前先release了吗?
北漂17载 2006-01-11
  • 打赏
  • 举报
回复
计数混乱的问题查到了 是以前的兄弟在debug的代码中的 有遍历pin的代码却没release所致,现在我RemoveFilter然后 release后,原地址空间就已经被清空了,可能数据已经被delete了吧,可 问题依旧。。。
北漂17载 2006-01-11
  • 打赏
  • 举报
回复
我发现release的时候 视频filter内部m_cRef的计数是11 音频的是5 Render的是10 晕菜 如果是1的话就不要delete的
北漂17载 2006-01-10
  • 打赏
  • 举报
回复
首先多些各位的帮助与提示
最近调试的时候我发现,我在delete 我的filter的时候会导致assert错误,错误原因是pin的连接计数不为0,也就是说我做的释放没有成功,而这种失败只在播放系统内部用fraumhofer video decoder 解码器来播放dvd的时候才出现,我怀疑我是不是有哪些接口没有实现,我从CTransInPlaceFilter继承的,然后实现了 Transform CheckInputType DecideBufferSize接口,还插入了一个什么都不做的视频render 从CBaseRenderer继承 实现了
HRESULT CheckMediaType( const CMediaType *pmtIn );
HRESULT DoRenderSample( IMediaSample *pMediaSample );
HRESULT SetMediaType( const CMediaType *pmt );
HRESULT Active();
HRESULT Inactive();
接口
DentistryDoctor 2006-01-07
  • 打赏
  • 举报
回复
或者是否存在内存被破坏的情况?
DentistryDoctor 2006-01-07
  • 打赏
  • 举报
回复
是否已经Release了呢?
rageliu 2006-01-06
  • 打赏
  • 举报
回复
想知道 IGraphBuilder realease 释放后它怎么释放的各个filter

其内部调用了Release().你只需要将你查询得到的接口和创建的组件全部释放,并将new出来的filter释放后delete掉
rageliu 2006-01-05
  • 打赏
  • 举报
回复
用GraphEdit调试看看
rageliu 2006-01-05
  • 打赏
  • 举报
回复
楼主说的不能插入需要的filter,看你说的那个filter的值是可以自动插入的,如果使用一次后不能再使用!请检查是否释放还有这个filter 是否是临界类型,即只能有一个实例再使用!独占方式!!!这样没释放是一定用不了的!!!

不过这种一般是Source Filter 或Render Filter对于Transform Filter应该不是这个原因
rageliu 2006-01-05
  • 打赏
  • 举报
回复
类new出来就是进程内filter不用注册的,在你的Graph里面其他的都用release,就new出来那个filter对象需要delete

楼主说delete出错,应该是资源的释放顺序不对
北漂17载 2006-01-05
  • 打赏
  • 举报
回复
应该是 fraumhofer video decoder 没有正常释放? 在graphedit中无法插入两个这种filter
北漂17载 2006-01-05
  • 打赏
  • 举报
回复
各位老大 有谁做过相关的么 请赐教
北漂17载 2006-01-05
  • 打赏
  • 举报
回复
应该是释放的问题吧 想知道 IGraphBuilder realease 释放后它怎么释放的各个filter 我用IGraphBuilder列举了其内部的filter 然后removefilter 仍然无效

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧