ホーム › Media.MediaFoundation › IMFVideoSampleAllocator
IMFVideoSampleAllocator
COM公式ドキュメント
ビデオメディアシンク用のビデオサンプルを割り当てます。
メソッド 4
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
ビデオメディアシンクが使用する Direct3D デバイスマネージャーを指定します。
| pManager | IUnknown* | in | Direct3D デバイスマネージャーの IUnknown インターフェイスへのポインター。メディアシンクは、このポインターに対して IDirect3DDeviceManager9 インターフェイスをクエリします。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
メディアシンクは、Direct3D デバイスマネージャーを使用して Direct3D デバイスへのポインターを取得し、それを使って Direct3D サーフェスを割り当てます。デバイスマネージャーにより、パイプライン内の複数のオブジェクト(ビデオレンダラーやビデオデコーダーなど)が同一の Direct3D デバイスを共有できます。
vtbl 4 HRESULT UninitializeSampleAllocator()
割り当て済みのすべてのビデオサンプルを解放します。
戻り値
このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
vtbl 5 HRESULT InitializeSampleAllocator(DWORD cRequestedFrames, IMFMediaType* pMediaType)
割り当てるサンプルの数と、サンプルのメディアタイプを指定します。
| cRequestedFrames | DWORD | in | 割り当てるサンプルの数。 |
| pMediaType | IMFMediaType* | in | ビデオ形式を記述するメディアタイプの IMFMediaType インターフェイスへのポインター。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 無効なメディアタイプです。 |
アロケーターからビデオサンプルを取得します。
| ppSample | IMFSample** | out | IMFSample インターフェイスへのポインターを受け取ります。呼び出し元はこのインターフェイスを解放する必要があります。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| アロケーターが初期化されていません。IMFVideoSampleAllocator::InitializeSampleAllocator または InitializeSampleAllocatorEx::InitializeSampleAllocatorEx を呼び出してください。 | |
| 利用可能なサンプルがありません。 |
出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IMFVideoSampleAllocator "{86CBC910-E533-4751-8E3B-F19B5B806A03}"
#usecom global IMFVideoSampleAllocator IID_IMFVideoSampleAllocator "{}"
#comfunc global IMFVideoSampleAllocator_SetDirectXManager 3 sptr
#comfunc global IMFVideoSampleAllocator_UninitializeSampleAllocator 4
#comfunc global IMFVideoSampleAllocator_InitializeSampleAllocator 5 int,sptr
#comfunc global IMFVideoSampleAllocator_AllocateSample 6 sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。