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 ビデオ ファイルの繰り返し再生を観察しました。
- picturepush.com/public/8931745 - 完全なグラフ - +6 Mb 成長 再生後毎回プライベート バイト
- picturepush.com/public/8931760 - DMO コンバータあり、サンプルグラバなし - メモリ リークなし
- picturepush.com/public/8931766 - DMO コンバーターあり、サンプルグラバーなし、ビデオ レンダラーあり - +7 Mb 成長 再生後毎回プライベート バイト
- picturepush.com/public/8931770 - デコーダのみ - メモリリークなし