游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2715|回复: 3

[问题]DirectShow使用时的内存泄露

[复制链接]

17

主题

165

帖子

167

积分

注册会员

Rank: 2

积分
167
发表于 2007-4-3 20:37:00 | 显示全部楼层 |阅读模式
我在使用DirectShow播放mp3的时候,通过IGraphBuilder接口的RenderFile进行播放.
当我想切换播放另一首mp3的时候,通过调用Release函数释放然后重新创建IGraphBuilder再RenderFile,结果出现了比较严重的内存泄露,切换一次泄露100K左右.
我有几点不明,
1.我的使用方法是不是错了,我通过使用FindFilterByName,找到Filter再Remove掉Filter依然还有内存泄露.
2.DirectShow切换播放mp3应该如何操作?
3.程序播放mp3应该不一定要使用dshow,那还有什么更好的方法么?

22

主题

69

帖子

69

积分

注册会员

Rank: 2

积分
69
发表于 2007-4-6 01:53:00 | 显示全部楼层

Re:[问题]DirectShow使用时的内存泄露

呵呵,在这里看到dshow的问题了!

应该是接口释放的问题。用IGraphBuilder::RenderFile()没错。播放MP3,Graph建立成功后,应该再得到这几个接口吧,比如IMediaControl,IMediaEvent,IBasicAudio等,确保这几个得到的接口都Release()了,再将IGraphBuilder::Release(). 你还有其它操作吗,再检查下,没有问题的。 另外释放时不用一个个Remove(),只要确保得到的接口都释放,就可以了。

问题3,还可以用MCI,windows media player 控件,我没用过,但应该是用dshow功能最丰富了。

89

主题

4036

帖子

4132

积分

论坛元老

Rank: 8Rank: 8

积分
4132
发表于 2007-4-6 09:59:00 | 显示全部楼层

Re:[问题]DirectShow使用时的内存泄露

播放mp3有很多库

17

主题

165

帖子

167

积分

注册会员

Rank: 2

积分
167
 楼主| 发表于 2007-4-6 10:21:00 | 显示全部楼层

Re:[问题]DirectShow使用时的内存泄露

谢谢2位了,我再确认下释放没有,还有问题就是,我释放后没有返回0,也就是说释放有问题.可能是我释放顺序有错吧.再次谢谢了.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-4-12 15:56

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表