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

IAMVideoAccelerator

COM
IID256a6a22-fbad-11d1-82bf-00a0c9696c8f継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IAMVideoAccelerator インターフェースは、ビデオデコーダーフィルターが DirectX Video Acceleration (DXVA) 1.0 の機能にアクセスできるようにします。

メソッド 12

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

vtbl 3 HRESULT GetVideoAcceleratorGUIDs(DWORD* pdwNumGuidsSupported, GUID* pGuidsSupported)

GetVideoAcceleratorGUIDs メソッドは、ディスプレイドライバーがサポートする DirectX Video Acceleration (DXVA) プロファイルの一覧を取得します。

pdwNumGuidsSupportedDWORD*inout

入力時には、pGuidsSupported 配列の要素数を指定します。 pGuidsSupportedNULL の場合、*pdwNumGuidsSupported の値は 0 でなければなりません。

出力時には、pGuidsSupportedNULL の場合、pdwNumGuidsSupported は制限モードの DXVA プロファイルの数を受け取ります。それ以外の場合、pdwNumGuidsSupportedpGuidsSupported 配列に実際にコピーされた GUID の数を受け取ります。

pGuidsSupportedGUID*outoptionalGUID の配列のアドレス、または NULL。値が非 NULL の場合、この配列は制限モードの DXVA プロファイルを指定する GUID の一覧を受け取ります。これらの GUID はヘッダーファイル dxva.h で定義されており、DXVA 1.0 仕様に記載されています。

戻り値

インターフェースの実装に依存する HRESULT 値を返します。HRESULT には、次の標準定数のいずれか、または一覧にないその他の値が含まれる場合があります。

戻り値 説明
E_FAIL
失敗しました。
E_INVALIDARG
引数が無効です。
E_NOTIMPL
このメソッドはサポートされていません。
E_POINTER
NULL ポインター引数です。
S_OK
成功しました。
VFW_E_WRONG_STATE
状態が無効です。ビデオレンダラーが Direct3D または DirectDraw デバイスを作成していません。

解説(Remarks)

このメソッドは 2 回呼び出します。1 回目の呼び出しでは pGuidsSupportedNULL に設定します。pdwNumGuidsSupported パラメーターは DXVA プロファイル GUID の数を受け取ります。必要なサイズの GUID 配列を確保し、メソッドを再度呼び出します。このとき、pGuidsSupported にはその配列のアドレスを設定します。メソッドはその配列に DXVA プロファイル GUID の一覧を格納します。

vtbl 4 HRESULT GetUncompFormatsSupported(GUID* pGuid, DWORD* pdwNumFormatsSupported, DDPIXELFORMAT* pFormatsSupported)

GetUncompFormatsSupported メソッドは、指定した DirectX Video Acceleration (DXVA) プロファイルを使用してレンダリングできる非圧縮ピクセル形式の一覧を取得します。

pGuidGUID*inDXVA プロファイルを指定する GUID へのポインター。サポートされているプロファイルの一覧を取得するには、 IAMVideoAccelerator::GetVideoAcceleratorGUIDs を呼び出します。
pdwNumFormatsSupportedDWORD*inout

入力時には、pFormatsSupported 配列の要素数を指定します。 pFormatsSupportedNULL の場合、*pdwNumFormatsSupported の値は 0 でなければなりません。

出力時には、pFormatsSupportedNULL の場合、pdwNumFormatsSupported はサポートされているピクセル形式の数を受け取ります。それ以外の場合、pdwNumFormatsSupportedpFormatsSupported 配列に実際にコピーされたピクセル形式の数を受け取ります。

pFormatsSupportedDDPIXELFORMAT*outoptionalDDPIXELFORMAT 構造体の配列のアドレス、または NULL。値が非 NULL の場合、この配列はピクセル形式の一覧を受け取ります。

戻り値

このメソッドは次のいずれかの値を返すことがあります。

戻り値 説明
DDERR_MOREDATA
配列が小さすぎたため、メソッドはサポートされている総数より少ない数の形式を返しました。この値は失敗コードですが、意図的に小さい配列を確保した場合はこのエラーを無視できます。
S_OK
メソッドは成功しました。

解説(Remarks)

このメソッドは 2 回呼び出します。1 回目の呼び出しでは pFormatsSupportedNULL に設定します。pdwNumFormatsSupported パラメーターは形式の数を受け取ります。必要なサイズの DDPIXELFORMAT 構造体の配列を確保し、メソッドを再度呼び出します。このとき、pFormatsSupported にはその配列のアドレスを設定します。メソッドはその配列にピクセル形式の一覧を格納します。

ドライバーは、最も推奨される形式を先頭に、推奨度の高い順に形式を返す必要があります。

vtbl 5 HRESULT GetInternalMemInfo(GUID* pGuid, AMVAUncompDataInfo* pamvaUncompDataInfo, AMVAInternalMemInfo* pamvaInternalMemInfo)

GetInternalMemInfo メソッドは、ハードウェア抽象化レイヤー (HAL) が独自の用途に確保するスクラッチメモリの量を照会します。

pGuidGUID*in使用中の DXVA プロファイルを指定する GUID へのポインター。
pamvaUncompDataInfoAMVAUncompDataInfo*in非圧縮データのサイズとピクセル形式を指定する AMVAUncompDataInfo 構造体へのポインター。
pamvaInternalMemInfoAMVAInternalMemInfo*inoutHAL が確保するスクラッチメモリの量を受け取る AMVAInternalMemInfo 構造体へのポインター。

戻り値

インターフェースの実装に依存する HRESULT 値を返します。HRESULT には、次の標準定数のいずれか、または一覧にないその他の値が含まれる場合があります。

戻り値 説明
E_FAIL
失敗しました。
E_INVALIDARG
引数が無効です。
E_NOTIMPL
このメソッドはサポートされていません。
E_POINTER
NULL ポインター引数です。
S_OK
成功しました。
vtbl 6 HRESULT GetCompBufferInfo(GUID* pGuid, AMVAUncompDataInfo* pamvaUncompDataInfo, DWORD* pdwNumTypesCompBuffers, AMVACompBufferInfo* pamvaCompBufferInfo)

GetCompBufferInfo メソッドは、DirectX Video Acceleration (DXVA) デコードに使用される圧縮バッファーに関する情報を取得します。

pGuidGUID*in使用中の DXVA プロファイルを指定する GUID へのポインター。
pamvaUncompDataInfoAMVAUncompDataInfo*in非圧縮データのサイズとピクセル形式を指定する AMVAUncompDataInfo 構造体へのポインター。
pdwNumTypesCompBuffersDWORD*inout

入力時には、pamvaCompBufferInfo 配列の要素数を指定します。 pamvaCompBufferInfoNULL の場合、*pdwNumTypesCompBuffers の値は 0 でなければなりません。

出力時には、pamvaCompBufferInfoNULL の場合、pdwNumTypesCompBuffers は確保すべき配列のサイズを受け取ります。それ以外の場合、pdwNumTypesCompBufferspamvaCompBufferInfo 配列に実際にコピーされた要素の数を受け取ります。

pamvaCompBufferInfoAMVACompBufferInfo*outoptional

AMVACompBufferInfo 構造体の配列のアドレス、または NULL。値が非 NULL の場合、メソッドは AMVACompBufferInfo 構造体の一覧をこの配列にコピーします。各構造体は、ビデオアクセラレーターが使用する 1 種類の圧縮データバッファーに対応します。

このメソッドを呼び出す前に、配列のすべての要素を 0 に設定してください。

各配列インデックスは、dxva.h で定義されている DXVA サーフェスタイプのいずれかに対応します。ビデオアクセラレーターは、最大 DXVA_NUM_TYPES_COMP_BUFFERS 個の配列エントリの一覧を返します。詳細については、DXVA 1.0 仕様のセクション 3.4「Buffer Description List」を参照してください。対象の DXVA プロファイルで特定のバッファータイプが使用されない場合、そのインデックスのエントリはすべての値が 0 になります。

戻り値

インターフェースの実装に依存する HRESULT 値を返します。HRESULT には、次の標準定数のいずれか、または一覧にないその他の値が含まれる場合があります。

戻り値 説明
E_FAIL
失敗しました。
E_INVALIDARG
引数が無効です。
E_NOTIMPL
このメソッドはサポートされていません。
E_POINTER
NULL ポインター引数です。
S_OK
成功しました。

解説(Remarks)

デコーダーは、ピン接続の処理中にこのメソッドを使用して圧縮バッファー情報を取得できます。ピンの接続後は、デコーダーは IAMVideoAccelerator::GetInternalCompBufferInfo を呼び出してこの情報を取得できます。

AMVACompBufferInfo 構造体には、IAMVideoAccelerator::GetBuffer メソッドに必要な情報が含まれています。

vtbl 7 HRESULT GetInternalCompBufferInfo(DWORD* pdwNumTypesCompBuffers, AMVACompBufferInfo* pamvaCompBufferInfo)

GetInternalCompBufferInfo メソッドは、DirectX Video Acceleration (DXVA) デコードに使用される圧縮バッファーに関する情報を取得します。

pdwNumTypesCompBuffersDWORD*inout

入力時には、pamvaCompBufferInfo 配列の要素数を指定します。 pamvaCompBufferInfoNULL の場合、*pdwNumTypesCompBuffers の値は 0 でなければなりません。

出力時には、pamvaCompBufferInfoNULL の場合、pdwNumTypesCompBuffers は確保すべき配列のサイズを受け取ります。それ以外の場合、pdwNumTypesCompBufferspamvaCompBufferInfo 配列に実際にコピーされた要素の数を受け取ります。

pamvaCompBufferInfoAMVACompBufferInfo*outoptional

AMVACompBufferInfo 構造体の配列のアドレス、または NULL。値が非 NULL の場合、メソッドは AMVACompBufferInfo 構造体の一覧をこの配列にコピーします。各構造体は、ビデオアクセラレーターが使用する 1 種類の圧縮データバッファーに対応します。

このメソッドを呼び出す前に、配列のすべての要素を 0 に設定してください。

各配列インデックスは、dxva.h で定義されている DXVA サーフェスタイプのいずれかに対応します。ビデオアクセラレーターは、最大 DXVA_NUM_TYPES_COMP_BUFFERS 個の配列エントリの一覧を返します。詳細については、DXVA 1.0 仕様のセクション 3.4「Buffer Description List」を参照してください。対象の DXVA プロファイルで特定のバッファータイプが使用されない場合、そのインデックスのエントリはすべての値が 0 になります。

戻り値

インターフェースの実装に依存する HRESULT 値を返します。HRESULT には、次の標準定数のいずれか、または一覧にないその他の値が含まれる場合があります。

戻り値 説明
E_FAIL
失敗しました。
E_INVALIDARG
引数が無効です。
E_NOTIMPL
このメソッドはサポートされていません。
E_POINTER
NULL ポインター引数です。
S_OK
成功しました。
VFW_E_INVALIDSUBTYPE
デコーダーがビデオレンダラーへ接続した際に DXVA デコードタイプを使用しませんでした。
VFW_E_NOT_CONNECTED
デコーダーフィルターとビデオレンダラーフィルターのピンが接続されていません。

解説(Remarks)

AMVACompBufferInfo 構造体には、IAMVideoAccelerator::GetBuffer メソッドに必要な情報が含まれています。

vtbl 8 HRESULT BeginFrame(AMVABeginFrameInfo* amvaBeginFrameInfo)

BeginFrame メソッドは、デコード済みピクチャを生成するための処理を開始します。

amvaBeginFrameInfoAMVABeginFrameInfo*inフレームの処理を開始するために必要な情報を含む AMVABeginFrameInfo 構造体へのポインター。

戻り値

インターフェースの実装に依存する HRESULT 値を返します。HRESULT には、次の標準定数のいずれか、または一覧にないその他の値が含まれる場合があります。

戻り値 説明
E_FAIL
失敗しました。
E_INVALIDARG
引数が無効です。
E_PENDING
非圧縮サーフェスがまだ使用可能になっていません。たとえば、表示のために読み取り中です。
E_POINTER
NULL ポインター引数です。
S_OK
成功しました。
VFW_E_INVALIDSUBTYPE
デコーダーがビデオレンダラーへ接続した際に DXVA デコードタイプを使用しませんでした。
VFW_E_NOT_CONNECTED
デコーダーフィルターとビデオレンダラーフィルターのピンが接続されていません。

解説(Remarks)

フィルターのピンが接続されていない場合、メソッドは VFW_E_NOT_CONNECTED を返します。

このメソッドは、利用可能なフレームバッファーがない場合にブロックすることがあります。

BeginFrame を呼び出すたびに、デコーダーは対応する IAMVideoAccelerator::EndFrame の呼び出しを行う必要があります。

vtbl 9 HRESULT EndFrame(AMVAEndFrameInfo* pEndFrameInfo)

EndFrame メソッドは、フレームの処理を終了します。

pEndFrameInfoAMVAEndFrameInfo*inAMVAEndFrameInfo 構造体へのポインター。

戻り値

インターフェースの実装に依存する HRESULT 値を返します。HRESULT には、次の標準定数のいずれか、または一覧にないその他の値が含まれる場合があります。

戻り値 説明
E_FAIL
失敗しました。
E_INVALIDARG
引数が無効です。
E_NOTIMPL
このメソッドはサポートされていません。
E_POINTER
NULL ポインター引数です。
S_OK
成功しました。
VFW_E_INVALIDSUBTYPE
デコーダーがビデオレンダラーへ接続した際に DXVA デコードタイプを使用しませんでした。
VFW_E_NOT_CONNECTED
デコーダーフィルターとビデオレンダラーフィルターのピンが接続されていません。

解説(Remarks)

フィルターのピンが接続されていない場合、メソッドは VFW_E_NOT_CONNECTED を返します。

このメソッドの詳細については、IAMVideoAccelerator::BeginFrame の解説を参照してください。

vtbl 10 HRESULT GetBuffer(DWORD dwTypeIndex, DWORD dwBufferIndex, BOOL bReadOnly, void** ppBuffer, INT* lpStride)

GetBuffer メソッドは、DirectX Video Acceleration (DXVA) デコード用に確保された圧縮または非圧縮サーフェスへのポインターを取得します。

dwTypeIndexDWORDin

サーフェスの種類を指定します。

  • 圧縮サーフェスへのポインターを取得するには、dxva.h で定義されている DXVA サーフェスタイプのいずれかを指定します。
  • 非圧縮の出力サーフェスへのポインターを取得するには、このパラメーターを 0xFFFFFFFF に設定します。
値 0xFFFFFFFF は、IAMVideoAccelerator::BeginFrameIAMVideoAccelerator::EndFrame の呼び出しの間でのみ有効です。
dwBufferIndexDWORDin

指定したサーフェスタイプ用に確保されたサーフェスプール内での、サーフェスの 0 から始まるインデックス。

bReadOnlyBOOLinデコーダーがサーフェスメモリに書き込むかどうかを指定します。読み取り専用アクセスの場合は TRUE を指定します。これにより、現在使用中の参照フレームへのアクセスが高速になる場合があります。
ppBuffervoid**outサーフェスメモリへのポインターを受け取ります。バッファーのサイズ (バイト単位) を取得するには、IAMVideoAccelerator::GetInternalCompBufferInfo メソッドを呼び出します。サイズは、dwTypeIndex に対応する AMVACompBufferInfo 構造体の dwBytesToAllocate メンバーで示されます。
lpStrideINT*outサーフェスのストライド (バイト単位) を受け取ります。

戻り値

インターフェースの実装に依存する HRESULT 値を返します。HRESULT には、次の標準定数のいずれか、または一覧にないその他の値が含まれる場合があります。

戻り値 説明
E_FAIL
失敗しました。
E_INVALIDARG
引数が無効です。
E_NOTIMPL
このメソッドはサポートされていません。
E_POINTER
NULL ポインター引数です。
S_OK
成功しました。
VFW_E_INVALIDSUBTYPE
デコーダーがビデオレンダラーへ接続した際に DXVA デコードタイプを使用しませんでした。
VFW_E_NOT_CONNECTED
デコーダーフィルターとビデオレンダラーフィルターのピンが接続されていません。

解説(Remarks)

フィルターのピンが接続されていない場合、メソッドは VFW_E_NOT_CONNECTED を返します。

このメソッドは、単一のバッファーをロックしてアクセスを取得します。バッファーはタイプと、そのタイプ内のインデックスによって識別されます。IAMVideoAccelerator::GetInternalCompBufferInfo メソッドは、pdwNumTypesCompBuffers パラメーターにサーフェスタイプの数を返します。この数が dwTypeIndex の有効な範囲を定義します。各タイプについて、AMVACompBufferInfo 構造体の dwNumCompBuffers メンバーがバッファーの数を示し、これが dwBufferIndex の有効な範囲を定義します。

バッファーを解放するには、IAMVideoAccelerator::ReleaseBuffer を呼び出します。

すべての圧縮バッファーが解放されるまで、呼び出しスレッドが Win16 ロックまたは DirectDraw ロックを保持する可能性があります。

vtbl 11 HRESULT ReleaseBuffer(DWORD dwTypeIndex, DWORD dwBufferIndex)

ReleaseBuffer メソッドは、IAMVideoAccelerator::GetBuffer の以前の呼び出しによってロックされたバッファーを解放します。

dwTypeIndexDWORDinバッファーのサーフェスタイプ。GetBuffer メソッドの dwTypeIndex パラメーターに渡したものと同じ値を使用します。
dwBufferIndexDWORDinバッファーの 0 から始まるインデックス。GetBuffer メソッドの dwBufferIndex パラメーターに渡したものと同じ値を使用します。

戻り値

インターフェースの実装に依存する HRESULT 値を返します。HRESULT には、次の標準定数のいずれか、または一覧にないその他の値が含まれる場合があります。

戻り値 説明
E_FAIL
失敗しました。
E_INVALIDARG
引数が無効です。
E_NOTIMPL
このメソッドはサポートされていません。
E_POINTER
NULL ポインター引数です。
S_OK
成功しました。
VFW_E_INVALIDSUBTYPE
デコーダーがビデオレンダラーへ接続した際に DXVA デコードタイプを使用しませんでした。
VFW_E_NOT_CONNECTED
デコーダーフィルターとビデオレンダラーフィルターのピンが接続されていません。

解説(Remarks)

フィルターのピンが接続されていない場合、メソッドは VFW_E_NOT_CONNECTED を返します。

このメソッドは、単一のバッファーのロックを解除します。ビデオデコーダーは、そのバッファーを使用したすべての IAMVideoAccelerator::Execute 呼び出しを行った後、そのバッファーが不要になった時点でこのメソッドを呼び出します。

GetBuffer から取得したバッファーポインターは、この呼び出し以降は無効になります。

vtbl 12 HRESULT Execute(DWORD dwFunction, void* lpPrivateInputData, DWORD cbPrivateInputData, void* lpPrivateOutputDat, DWORD cbPrivateOutputData, DWORD dwNumBuffers, AMVABUFFERINFO* pamvaBufferInfo)

Execute メソッドは、DirectX Video Acceleration (DXVA) のデコード操作を実行します。

dwFunctionDWORDin1 つ以上の DXVA 関数番号を含みます。
lpPrivateInputDatavoid*inデコード操作の入力データへのポインター。このデータの意味は、サーフェスタイプと関数番号によって異なります。詳細については、DXVA 1.0 仕様を参照してください。
cbPrivateInputDataDWORDin入力データのサイズ (バイト単位)。
lpPrivateOutputDatvoid*inビデオアクセラレーターが出力データを書き込むバッファーへのポインター。
cbPrivateOutputDataDWORDinlpPrivateOutputData バッファーのサイズ (バイト単位)。
dwNumBuffersDWORDinpamvaBufferInfo 配列の要素数。
pamvaBufferInfoAMVABUFFERINFO*inAMVABUFFERINFO 構造体の配列へのポインター。

戻り値

インターフェースの実装に依存する HRESULT 値を返します。HRESULT には、次の標準定数のいずれか、または一覧にないその他の値が含まれる場合があります。

戻り値 説明
E_FAIL
失敗しました。
E_INVALIDARG
引数が無効です。
E_NOTIMPL
このメソッドはサポートされていません。
E_POINTER
NULL ポインター引数です。
S_OK
成功しました。
VFW_E_INVALIDSUBTYPE
デコーダーがビデオレンダラーへ接続した際に DXVA デコードタイプを使用しませんでした。
VFW_E_NOT_CONNECTED
デコーダーフィルターとビデオレンダラーフィルターのピンが接続されていません。

解説(Remarks)

フィルターのピンが接続されていない場合、メソッドは VFW_E_NOT_CONNECTED を返します。

関連するバッファーリストは、関数番号 (既定値は 0) と、伸長操作を記述するために必要なプライベートデータとともに渡されます。たとえば、伸長された参照フレーム情報はバッファーリストで渡されます。バッファーリストの順序は重要であり、実行される個々の伸長操作によって定義されます。

プライベートデータは、ドライバーとの間で受け渡しできます。

vtbl 13 HRESULT QueryRenderStatus(DWORD dwTypeIndex, DWORD dwBufferIndex, DWORD dwFlags)

QueryRenderStatus メソッドは、DirectX Video Acceleration (DXVA) デコードサーフェスの読み取り/書き込みステータスを照会します。

dwTypeIndexDWORDin

照会するサーフェスの種類を指定します。

  • 圧縮サーフェスの場合は、dxva.h で定義されている DXVA サーフェスタイプのいずれかを指定します。
  • 非圧縮の出力サーフェスの場合は、このパラメーターを 0xFFFFFFFF に設定します。
dwBufferIndexDWORDin指定したサーフェスタイプ用に確保されたサーフェスプール内での、サーフェスの 0 から始まるインデックス。
dwFlagsDWORDin

実行する照会の種類を指定します。

意味
Zero
サーフェスが書き込みに安全に使用できるかどうかをテストします。
AMVA_QUERYRENDERSTATUSF_READ
サーフェスが読み取りに安全に使用できるかどうかをテストします。

戻り値

HRESULT 値を返します。取り得る値には次のものがあります。

戻り値 説明
E_PENDING
操作はまだ進行中です。
S_OK
操作は完了しています。
VFW_E_INVALIDSUBTYPE
デコーダーがビデオレンダラーへ接続した際に DXVA デコードタイプを使用しませんでした。
VFW_E_NOT_CONNECTED
デコーダーフィルターとビデオレンダラーフィルターのピンが接続されていません。

解説(Remarks)

フィルターのピンが接続されていない場合、メソッドは VFW_E_NOT_CONNECTED を返します。

vtbl 14 HRESULT DisplayFrame(DWORD dwFlipToIndex, IMediaSample* pMediaSample)

DisplayFrame メソッドは、ビデオレンダラーにデコード済みフレームを表示させます。

dwFlipToIndexDWORDin表示するデコード済みフレームのサーフェスインデックス。
pMediaSampleIMediaSample*inメディアサンプルの IMediaSample インターフェースへのポインター。このサンプルはビデオフレームを含みませんが、タイムスタンプと任意のサンプルフラグを指定するために使用されます。(サンプルフラグの詳細については、AM_SAMPLE2_PROPERTIES を参照してください。)

戻り値

インターフェースの実装に依存する HRESULT 値を返します。HRESULT には、次の標準定数のいずれか、または一覧にないその他の値が含まれる場合があります。

戻り値 説明
E_FAIL
失敗しました。
E_INVALIDARG
引数が無効です。
E_NOTIMPL
このメソッドはサポートされていません。
E_POINTER
NULL ポインター引数です。
S_OK
成功しました。
VFW_E_INVALIDSUBTYPE
デコーダーがビデオレンダラーへ接続した際に DXVA デコードタイプを使用しませんでした。
VFW_E_NOT_CONNECTED
デコーダーフィルターとビデオレンダラーフィルターのピンが接続されていません。

解説(Remarks)

フィルターのピンが接続されていない場合、メソッドは VFW_E_NOT_CONNECTED を返します。

このメソッドは、ビデオレンダラーがビデオフレームの表示を完了するまでブロックします。

ビデオデコーダーは、dwFlipToIndex で指定されたインデックスのサーフェスに対して IAMVideoAccelerator::EndFrame を呼び出した後に、このメソッドを呼び出します。このインデックス値は、以前の IAMVideoAccelerator::BeginFrame 呼び出しにおける AMVABeginFrameInfo.dwDestSurfaceIndex の値と一致している必要があります。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IAMVideoAccelerator "{256A6A22-FBAD-11D1-82BF-00A0C9696C8F}"
#usecom global IAMVideoAccelerator IID_IAMVideoAccelerator "{}"
#comfunc global IAMVideoAccelerator_GetVideoAcceleratorGUIDs   3 var,var
#comfunc global IAMVideoAccelerator_GetUncompFormatsSupported  4 var,var,var
#comfunc global IAMVideoAccelerator_GetInternalMemInfo         5 var,var,var
#comfunc global IAMVideoAccelerator_GetCompBufferInfo          6 var,var,var,var
#comfunc global IAMVideoAccelerator_GetInternalCompBufferInfo  7 var,var
#comfunc global IAMVideoAccelerator_BeginFrame                 8 var
#comfunc global IAMVideoAccelerator_EndFrame                   9 var
#comfunc global IAMVideoAccelerator_GetBuffer                  10 int,int,int,sptr,var
#comfunc global IAMVideoAccelerator_ReleaseBuffer              11 int,int
#comfunc global IAMVideoAccelerator_Execute                    12 int,sptr,int,sptr,int,int,var
#comfunc global IAMVideoAccelerator_QueryRenderStatus          13 int,int,int
#comfunc global IAMVideoAccelerator_DisplayFrame               14 int,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。