近日心得(Com, directshow)

这两天写的一个DShow的东东,在退出的时候,释放总有问题。

IGraphBuilder->Release(),会死在这句话!

一开始,认为可能是引用计数的问题,于是,就仔细查找。

查找的过程,总是进步和过程,也是因为此,我弄清楚了引用计数的添删。

1。如果使用CComPtr<IXXX> pXXX,则在 pXXX = pXXX2 的时候,引用计数会加1。

2。CoCreateInterface和QueryInterface时,如果成功,则引用计数会加1。

3。如果用用IXXX * pXXX,则在 pXXX= pXXX2 的时候,引用计数不变。

4。如果用进程内Filter,刚在pXXX = new CXXX() 的时候,引用计数不增加,为0。

在这个过程中,还找到了一个错误,也就解决了IGraphBuilder->Release()的问题,

那就是在写Filter的过程中,对于CBaseFilter::Stop的重载中,要确保每一个返回处,

都要调用 return CBaseFilter::Stop()

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值