Microsoft DTV-DVD视频解码器的内存泄漏?

时间:2012-08-08 12:11:04

标签: memory-leaks directshow decoder samplegrabber

在AVI容器视频文件渲染h.264期间,我的应用程序的内存消耗速度很快,速度达到150 Mb /分钟。

这是我图表图片的链接:http://picturepush.com/public/8926555

如果使用LAV视频解码器,则无内存泄漏。

首先我建议,泄漏发生在我的代码中,但是我只是关闭(在回调开始时设置“返回S_OK”)我的样本采集器过滤器 - 泄漏继续。

此外,我试图在停止图之后释放每个过滤器,但这没有删除泄漏:

if(m_pMediaControl)
{
    HRESULT hr = m_pMediaControl->Stop(); 

    LONG lCount;
    IUnknown* pUnk;
    IAMCollection*  p_Collection;
    hr = m_pMediaControl->get_FilterCollection(reinterpret_cast<IDispatch**>(&p_Collection));
    hr = p_Collection->get_Count(&lCount);
    for (int i=0; i<lCount; i++)
    {
        hr = p_Collection->Item(i, &pUnk);
        pUnk->Release();
    }
    p_Collection->Release();
}
m_pMediaControl.Release();

对于任何消息都会感到高兴,如何消除内存泄漏?

我在graphedit创建了不同的图形并观察了重复播放短(6秒)h.264视频文件:

  1. picturepush.com/public/8931745 - 完整图表 - +6 Mb在播放后每次成长专用字节
  2. picturepush.com/public/8931760 - 使用DMO转换器,无samplegrabber - 无内存泄漏
  3. picturepush.com/public/8931766 - 使用DMO转换器,不使用samplegrabber,但使用视频渲染器 - 每次播放后+7 Mb长大专用字节
  4. picturepush.com/public/8931770 - 只有解码器 - 没有内存泄漏

0 个答案:

没有答案