ホーム › Media.MediaFoundation › IMFSampleAllocatorControl
IMFSampleAllocatorControl
COM公式ドキュメント
ビデオキャプチャソースおよびトランスフォームによって実装されます。コンテナ内からアクセス可能なメモリを使用してサンプルを割り当てるためのサンプルアロケーターを、システムがコンポーネントに提供できるようにします。
解説(Remarks)
このインターフェイスを実装しないコンポーネント、またはシステムが提供するアロケーターを使用しないコンポーネントでも、サンプルを割り当てることは可能です。ただし、コンテナ内から実行される場合、システムはすべてのサンプルをコンテナメモリにコピーする必要があり、効率が低下します。
メソッド 2
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
指定した出力ストリームで使用する既定のサンプルアロケーターを設定します。
| dwOutputStreamID | DWORD | in | pAllocator パラメーターが適用される出力ストリームの ID。 |
| pAllocator | IUnknown* | in | 指定した出力ストリームで使用するサンプルアロケーターへのポインターを受け取ります。このアロケーターは、IMFVideoCaptureSampleAllocator や IMFVideoSampleAllocatorEx などの MF アロケーターインターフェイスのいずれかをサポートします。 |
戻り値
このメソッドは HRESULT を返します。
解説(Remarks)
システムはこのメソッドを呼び出して、コンテナ内からアクセス可能なメモリを使用してサンプルを割り当てられるサンプルアロケーターをコンポーネントに提供します。
提供されたアロケーターを使用するコンポーネントは、IMFSampleAllocatorControl::GetAllocatorUsage の呼び出しに対して MFSampleAllocatorUsage_UsesProvidedAllocator を返す必要があります。
vtbl 4 HRESULT GetAllocatorUsage(DWORD dwOutputStreamID, DWORD* pdwInputStreamID, MFSampleAllocatorUsage* peUsage)
指定した出力ストリームのサンプルアロケーターの使用状況を取得します。
| dwOutputStreamID | DWORD | in | サンプルアロケーターの使用状況を要求する出力ストリームの ID。 |
| pdwInputStreamID | DWORD* | out | アロケーターの使用状況が MFSampleAllocatorUsage_DoesNotAllocate の場合、この出力パラメーターには、出力サンプルの供給元となる入力ストリームの ID が設定されます。それ以外のアロケーター使用状況の値の場合、このパラメーターは無視されます。 |
| peUsage | MFSampleAllocatorUsage* | out | 指定した出力ストリームのサンプルアロケーターの使用状況を指定する、MFSampleAllocatorUsage 列挙体のメンバー。 |
戻り値
このメソッドは HRESULT を返します。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
出力引数:
#define global IID_IMFSampleAllocatorControl "{DA62B958-3A38-4A97-BD27-149C640C0771}" #usecom global IMFSampleAllocatorControl IID_IMFSampleAllocatorControl "{}" #comfunc global IMFSampleAllocatorControl_SetDefaultAllocator 3 int,sptr #comfunc global IMFSampleAllocatorControl_GetAllocatorUsage 4 int,var,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IMFSampleAllocatorControl "{DA62B958-3A38-4A97-BD27-149C640C0771}" #usecom global IMFSampleAllocatorControl IID_IMFSampleAllocatorControl "{}" #comfunc global IMFSampleAllocatorControl_SetDefaultAllocator 3 int,sptr #comfunc global IMFSampleAllocatorControl_GetAllocatorUsage 4 int,sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。