次の方法で共有


CBaseAllocator.ReleaseBuffer メソッド

[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayerIMFMediaEngineAudio/Video Capture を使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存のコードを、可能であれば新しい API を使用するように書き換えるよう提案しています。]

メソッドは ReleaseBuffer 、メディア サンプルを無料のメディア サンプルの一覧に返します。 このメソッドは、 IMemAllocator::ReleaseBuffer メソッドを 実装します。

構文

HRESULT ReleaseBuffer(
   IMediaSample *pSample
);

パラメーター

pSample

メディア サンプル オブジェクトの IMediaSample インターフェイスへのポインター。

戻り値

S_OK を返します。

解説

メディア サンプルの参照カウントが 0 に達すると、サンプルはそれ自体を パラメーターとして ReleaseBuffer を呼び出します。 このメソッドは、次のアクションを実行します。

  • メディア サンプルをフリー リストに返します (CBaseAllocator::m_lFree)。
  • CBaseAllocator::NotifySample メソッドを呼び出します。このメソッドは、CBaseAllocator::GetBuffer メソッドの呼び出しでブロックされるすべてのスレッドを解放します。
  • CBaseAllocator::SetNotify メソッドが以前に呼び出された場合は、IMemAllocatorNotifyCallbackTemp::NotifyRelease メソッドを呼び出します。
  • 最後のサンプルがリリースされると、保留中の CBaseAllocator::D ecommit 呼び出しがある場合は、 CBaseAllocator::Free メソッドを呼び出してバッファー メモリを解放します。 (基底クラスでは、 Free は純粋な仮想メソッドです)。

要件

要件
ヘッダー
Amfilter.h (Streams.h を含む)
ライブラリ
Strmbase.lib (製品版ビルド);
Strmbasd.lib (デバッグ ビルド)

関連項目

CBaseAllocator クラス