1

AVI コンテナで h.264 をレンダリングしている間、アプリケーションのビデオ ファイルのメモリ消費量が約 150 Mb/min の高速で上昇します。

これは私のグラフの画像へのリンクです: http://picturepush.com/public/8926555

LAV ビデオ デコーダを使用している場合 - メモリ リークはありません。

最初に、コードでリークが発生したことをお勧めしますが、スイッチをオフにするだけでは (コールバックの開始時に「return 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 コンバータあり、サンプルグラバなし - メモリ リークなし
  3. picturepush.com/public/8931766 - DMO コンバーターあり、サンプルグラバーなし、ビデオ レンダラーあり - +7 Mb 成長 再生後毎回プライベート バイト
  4. picturepush.com/public/8931770 - デコーダのみ - メモリリークなし
4

0 に答える 0