陆老师帮忙:使用自己建的filter时无法释放COM组件,内存一直在涨

jhm633 2006-05-10 10:48:31


小妹自己建了个filter,但是使用后释放它和graph时总感觉没有释放掉:内存没有减小,同时释放后在graphedit里用connect to remote graph还可以看到刚才的graph。 但是filter和IGraphBuilder的release函数执行都是成功的,CoUninitialize也执行了。为什么会这样呢?
...全文
163 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zx_star 2006-05-16
  • 打赏
  • 举报
回复
要是还没有解决,就和我讨论一下吧。我也碰到过类似情况。zhaoxing@digirise.com
DentistryDoctor 2006-05-11
  • 打赏
  • 举报
回复
陆老师说的是。另外,你是否Release了你的filter?
happydeer 2006-05-11
  • 打赏
  • 举报
回复
你在销毁filter graph的时候有没有调RemoveFromObjectTable();呢?

void CDXGraph::RemoveFromObjectTable(void)
{
IRunningObjectTable * objectTable = 0;
if (SUCCEEDED(GetRunningObjectTable(0, &objectTable)))
{
objectTable->Revoke(mObjectTableEntry);
objectTable->Release();
mObjectTableEntry = 0;
}
}
matrass_zhao 2006-05-11
  • 打赏
  • 举报
回复
小妹留个电话吧,大哥给你当面结束如何?

这年头,问个问题还分性别。
happydeer 2006-05-11
  • 打赏
  • 举报
回复
addfilter不会明显增加内存。

filter graph run起来后内存使用达到最大,但stop后应该明显降低。至于是否能降到run之前的内存水平也说不准。

我只能建议你多检查一下你写的filter咯,特别是内存的申请/释放,COM接口的release等。
jhm633 2006-05-11
  • 打赏
  • 举报
回复
matrass_zhao() :同学!你也太狠了点,本人也就一时着急,你老兄也不用那么不给面子吧!会就答!
happydeer(新奇军) ,陆老师吗?你说的那个函数我有加,另外也有Release filter以及removefilter的操作.
我自己写的是一个多声道音频实时采集filter,有三个输入pin。每次释放又重建graph并运行时,内存大概会增加300K. 单步调试发现重建graph时addfilter并不会引起内存增加,好像是在run之后才增加的,stop后却没有减少到原来的内存,只是减少了100k左右。会不会是3个输入pin结束传输后没有释放输入的sample的内存空间呢?3个输入pin的内存管理会不会和单个的不一样?

2,543

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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