ホーム › Media.DirectShow › IAMVideoAccelerator
IAMVideoAccelerator
COMメソッド 12
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
| pdwNumGuidsSupported | DWORD* | inout | 対応アクセラレータGUID数をDWORD*で受け取る入出力。NULLで個数のみ問い合わせ。 |
| pGuidsSupported | GUID* | outoptional | 対応するアクセラレータGUID配列を受け取る出力。NULL可で個数取得。 |
vtbl 4 HRESULT GetUncompFormatsSupported(GUID* pGuid, DWORD* pdwNumFormatsSupported, DDPIXELFORMAT* pFormatsSupported)
| pGuid | GUID* | in | 対象アクセラレータ方式を示すGUIDへのポインタ入力。 |
| pdwNumFormatsSupported | DWORD* | inout | 対応する非圧縮フォーマット数をDWORD*で受け取る入出力。 |
| pFormatsSupported | DDPIXELFORMAT* | outoptional | 対応するDDPIXELFORMAT配列を受け取る出力。NULL可で個数取得。 |
vtbl 5 HRESULT GetInternalMemInfo(GUID* pGuid, AMVAUncompDataInfo* pamvaUncompDataInfo, AMVAInternalMemInfo* pamvaInternalMemInfo)
| pGuid | GUID* | in | 対象アクセラレータ方式を示すGUIDへのポインタ入力。 |
| pamvaUncompDataInfo | AMVAUncompDataInfo* | in | 非圧縮データ情報を指定するAMVAUncompDataInfo構造体への入力。 |
| pamvaInternalMemInfo | AMVAInternalMemInfo* | inout | 必要な内部メモリ情報を受け取るAMVAInternalMemInfo構造体への出力。 |
vtbl 6 HRESULT GetCompBufferInfo(GUID* pGuid, AMVAUncompDataInfo* pamvaUncompDataInfo, DWORD* pdwNumTypesCompBuffers, AMVACompBufferInfo* pamvaCompBufferInfo)
| pGuid | GUID* | in | 対象アクセラレータ方式を示すGUIDへのポインタ入力。 |
| pamvaUncompDataInfo | AMVAUncompDataInfo* | in | 非圧縮データ情報を指定するAMVAUncompDataInfo構造体への入力。 |
| pdwNumTypesCompBuffers | DWORD* | inout | 圧縮バッファ種別数をDWORD*で受け取る入出力。 |
| pamvaCompBufferInfo | AMVACompBufferInfo* | outoptional | 各種圧縮バッファ情報を受け取るAMVACompBufferInfo配列の出力。NULL可で個数取得。 |
vtbl 7 HRESULT GetInternalCompBufferInfo(DWORD* pdwNumTypesCompBuffers, AMVACompBufferInfo* pamvaCompBufferInfo)
| pdwNumTypesCompBuffers | DWORD* | inout | 内部圧縮バッファの種別数をDWORD*で受け取る入出力。 |
| pamvaCompBufferInfo | AMVACompBufferInfo* | outoptional | 内部圧縮バッファ情報を受け取るAMVACompBufferInfo配列の出力。 |
vtbl 8 HRESULT BeginFrame(AMVABeginFrameInfo* amvaBeginFrameInfo)
| amvaBeginFrameInfo | AMVABeginFrameInfo* | in | フレームのデコード開始情報を指定するAMVABeginFrameInfo構造体への入力。 |
vtbl 9 HRESULT EndFrame(AMVAEndFrameInfo* pEndFrameInfo)
| pEndFrameInfo | AMVAEndFrameInfo* | in | フレームのデコード終了情報を指定するAMVAEndFrameInfo構造体への入力。 |
vtbl 10 HRESULT GetBuffer(DWORD dwTypeIndex, DWORD dwBufferIndex, BOOL bReadOnly, void** ppBuffer, INT* lpStride)
| dwTypeIndex | DWORD | in | 取得するバッファ種別のインデックス入力。 |
| dwBufferIndex | DWORD | in | 種別内のバッファインデックス入力。 |
| bReadOnly | BOOL | in | バッファを読み取り専用で取得するか否かのBOOL入力。 |
| ppBuffer | void** | out | ロックされたバッファ先頭ポインタをvoid**で受け取る出力。 |
| lpStride | INT* | out | バッファ1行あたりのバイト数(ストライド)をINT*で受け取る出力。 |
| dwTypeIndex | DWORD | in | 解放するバッファ種別のインデックス入力。 |
| dwBufferIndex | DWORD | in | 種別内のバッファインデックス入力。 |
vtbl 12 HRESULT Execute(DWORD dwFunction, void* lpPrivateInputData, DWORD cbPrivateInputData, void* lpPrivateOutputDat, DWORD cbPrivateOutputData, DWORD dwNumBuffers, AMVABUFFERINFO* pamvaBufferInfo)
| dwFunction | DWORD | in | 実行するアクセラレータ機能を示すDWORDコード入力。 |
| lpPrivateInputData | void* | in | ドライバ固有の入力データブロックへのポインタ入力。 |
| cbPrivateInputData | DWORD | in | 入力データのバイトサイズをDWORDで指定する入力。 |
| lpPrivateOutputDat | void* | in | ドライバ固有の出力データを受け取るバッファへのポインタ。 |
| cbPrivateOutputData | DWORD | in | 出力データバッファのバイトサイズをDWORDで指定する入力。 |
| dwNumBuffers | DWORD | in | 対象バッファ情報配列の要素数をDWORDで指定する入力。 |
| pamvaBufferInfo | AMVABUFFERINFO* | in | 操作対象バッファを記述するAMVABUFFERINFO配列への入力。 |
| dwTypeIndex | DWORD | in | 状態を問い合わせるバッファ種別のインデックス入力。 |
| dwBufferIndex | DWORD | in | 種別内のバッファインデックス入力。 |
| dwFlags | DWORD | in | 問い合わせ動作を制御するフラグ入力。 |
vtbl 14 HRESULT DisplayFrame(DWORD dwFlipToIndex, IMediaSample* pMediaSample)
| dwFlipToIndex | DWORD | in | 表示に切り替える非圧縮サーフェスのインデックス入力。 |
| pMediaSample | IMediaSample* | in | 表示対象フレームを保持するIMediaSampleへのポインタ入力。 |
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 指定が可能。#define global IID_IAMVideoAccelerator "{256A6A22-FBAD-11D1-82BF-00A0C9696C8F}" #usecom global IAMVideoAccelerator IID_IAMVideoAccelerator "{}" #comfunc global IAMVideoAccelerator_GetVideoAcceleratorGUIDs 3 sptr,sptr #comfunc global IAMVideoAccelerator_GetUncompFormatsSupported 4 sptr,sptr,sptr #comfunc global IAMVideoAccelerator_GetInternalMemInfo 5 sptr,sptr,sptr #comfunc global IAMVideoAccelerator_GetCompBufferInfo 6 sptr,sptr,sptr,sptr #comfunc global IAMVideoAccelerator_GetInternalCompBufferInfo 7 sptr,sptr #comfunc global IAMVideoAccelerator_BeginFrame 8 sptr #comfunc global IAMVideoAccelerator_EndFrame 9 sptr #comfunc global IAMVideoAccelerator_GetBuffer 10 int,int,int,sptr,sptr #comfunc global IAMVideoAccelerator_ReleaseBuffer 11 int,int #comfunc global IAMVideoAccelerator_Execute 12 int,sptr,int,sptr,int,int,sptr #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が無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。