Win32 API 日本語リファレンス
ホームMedia.MediaFoundation › IMFVideoCaptureSampleAllocator

IMFVideoCaptureSampleAllocator

COM
IID725b77c7-ca9f-4fe5-9d72-9946bf9b3c70継承元IMFVideoSampleAllocator自前メソッド開始 vtbl7

公式ドキュメント

ビデオキャプチャデバイス向けの特殊な機能を備えた、ビデオメディアシンク用のビデオサンプルを割り当てます。

解説(Remarks)

このインターフェイスは IMFVideoSampleAllocator を継承し、ビデオキャプチャのシナリオに関連するパラメーターを持つ InitializeCaptureSampleAllocator メソッドを提供します。

メソッド 1

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 7 HRESULT InitializeCaptureSampleAllocator(DWORD cbSampleSize, DWORD cbCaptureMetadataSize, DWORD cbAlignment, DWORD cMinimumSamples, IMFAttributes* pAttributes, IMFMediaType* pMediaType)

ビデオキャプチャのシナリオに関連するパラメーターを使用して、サンプルアロケーターを初期化します。

cbSampleSizeDWORDinサンプルサイズをバイト単位で指定する DWORD です。アロケーターが実際に使用するサンプルサイズは、pMediaType が必要とするサイズと cbSampleSize のうち大きい方になります。
cbCaptureMetadataSizeDWORDinキャプチャメタデータのサイズをバイト単位で指定する DWORD です。キャプチャされたフレームに追加のメタデータを含めたい呼び出し元にのみ適用されます。メタデータサイズには、メタデータペイロード自体のサイズに加えて、KSCAMERA_METADATA_ITEMHEADER のサイズを含める必要があります。
cbAlignmentDWORDinバッファーのアライメントサイズをバイト単位で指定する DWORD です。既定かつ最小のアライメントサイズは 4KB です。4KB 未満のカスタムアライメントサイズは 4KB として扱われます。
cMinimumSamplesDWORDin事前割り当てするサンプルの最小数を指定する DWORD です。アロケーターが指定された最小数のサンプルを事前割り当てできない場合、このメソッドは失敗します。
pAttributesIMFAttributes*inoptional

省略可能です。サンプルアロケーター向けの追加の構成属性を保持する IMFAttributes ストアです。サポートされている属性は次のとおりです。

pMediaTypeIMFMediaType*inサンプルを割り当てる対象のメディアタイプを指定する IMFMediaType です。サンプルアロケーターは、このパラメーターを使用してメディアサンプルに必要な最小サイズを計算します。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれますが、これらに限定されません。

リターンコード 説明
S_OK メソッドは成功しました。
MF_E_INVALIDMEDIATYPE メディアタイプが無効です。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

#define global IID_IMFVideoCaptureSampleAllocator "{725B77C7-CA9F-4FE5-9D72-9946BF9B3C70}"
#usecom global IMFVideoCaptureSampleAllocator IID_IMFVideoCaptureSampleAllocator "{}"
#comfunc global IMFVideoCaptureSampleAllocator_InitializeCaptureSampleAllocator  7 int,int,int,int,sptr,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。