IMemAllocator インターフェイス (strmif.h)
[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayer、IMFMediaEngine、Audio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]
インターフェイスは IMemAllocator
、ピン間でデータを移動するためにメディア サンプルを割り当てます。
このインターフェイスは、入力ピンが IMemInputPin インターフェイスを公開するときに、アロケーターを共有するピンで使用されます。 ピンは、アロケーターを提供するピンをネゴシエートします。 アロケーターは、メモリ バッファーの割り当て、空のバッファーの取得、およびバッファーの解放に使用されます。 すべてのフィルターで独自のアロケーターが作成されるわけではないため、複数のフィルターで 1 つのアロケーターを使用できます。 詳細については、「 フィルターの接続方法」を参照してください。
通常、アプリケーションではこのインターフェイスは使用されません。
アロケーターを使用するには、次の手順を実行します。
- バッファーの数や各バッファーのサイズなど、バッファー要件を指定するには、 IMemAllocator::SetProperties メソッドを呼び出します。
- バッファーを割り当てるには、 IMemAllocator::Commit メソッドを呼び出します。
- メディア サンプルを取得するには、 IMemAllocator::GetBuffer メソッドを呼び出します。 このメソッドは、次のサンプルが使用可能になるまでブロックします。
- 各サンプルが完了したら、サンプルの IUnknown::Release メソッドを呼び出します。 参照カウントが 0 に達しても、サンプルは削除されません。 代わりに、サンプルはアロケーターの空きリストに戻ります。
- アロケーターの使用が完了したら、 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 を含む) |