次の方法で共有


IMemAllocator インターフェイス (strmif.h)

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

インターフェイスは IMemAllocator 、ピン間でデータを移動するためにメディア サンプルを割り当てます。

このインターフェイスは、入力ピンが IMemInputPin インターフェイスを公開するときに、アロケーターを共有するピンで使用されます。 ピンは、アロケーターを提供するピンをネゴシエートします。 アロケーターは、メモリ バッファーの割り当て、空のバッファーの取得、およびバッファーの解放に使用されます。 すべてのフィルターで独自のアロケーターが作成されるわけではないため、複数のフィルターで 1 つのアロケーターを使用できます。 詳細については、「 フィルターの接続方法」を参照してください。

通常、アプリケーションではこのインターフェイスは使用されません。

アロケーターを使用するには、次の手順を実行します。

  1. バッファーの数や各バッファーのサイズなど、バッファー要件を指定するには、 IMemAllocator::SetProperties メソッドを呼び出します。
  2. バッファーを割り当てるには、 IMemAllocator::Commit メソッドを呼び出します。
  3. メディア サンプルを取得するには、 IMemAllocator::GetBuffer メソッドを呼び出します。 このメソッドは、次のサンプルが使用可能になるまでブロックします。
  4. 各サンプルが完了したら、サンプルの IUnknown::Release メソッドを呼び出します。 参照カウントが 0 に達しても、サンプルは削除されません。 代わりに、サンプルはアロケーターの空きリストに戻ります。
  5. アロケーターの使用が完了したら、 IMemAllocator::D ecommit メソッドを呼び出してバッファーのメモリを解放します。

継承

IMemAllocator インターフェイスは、IUnknown インターフェイスから継承されます。 IMemAllocator には、次の種類のメンバーもあります。

メソッド

IMemAllocator インターフェイスには、これらのメソッドがあります。

 
IMemAllocator::Commit

Commit メソッドはバッファー メモリを割り当てます。
IMemAllocator::D ecommit

Decommit メソッドは、バッファー メモリを解放します。
IMemAllocator::GetBuffer

GetBuffer メソッドは、空のバッファーを含むメディア サンプルを取得します。
IMemAllocator::GetProperties

GetProperties メソッドは、アロケーターが作成するバッファーの数とバッファー プロパティを取得します。
IMemAllocator::ReleaseBuffer

ReleaseBuffer メソッドは、メディア サンプルを解放します。
IMemAllocator::SetProperties

SetProperties メソッドは、割り当てるバッファーの数と各バッファーのサイズを指定します。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー strmif.h (Dshow.h を含む)