IAMVideoAcceleratorNotify
COM公式ドキュメント
IAMVideoAcceleratorNotify インターフェイスは、IAMVideoAccelerator インターフェイスと組み合わせて使用されるコールバックインターフェイスです。
メソッド 3
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
GetUncompSurfacesInfo メソッドは、割り当てる非圧縮サーフェスの数とピクセル形式をデコーダーに照会します。
| pGuid | GUID* | in | 使用中の DXVA プロファイルを指定する GUID へのポインター。 |
| pUncompBufferInfo | AMVAUncompBufferInfo* | inout | AMVAUncompBufferInfo 構造体へのポインター。デコーダーは、サーフェスの最小数と最大数、およびピクセル形式に関するデコーダーの要件をこの構造体に設定します。 サポートされているピクセル形式の一覧を取得するには、デコーダーは IAMVideoAccelerator::GetUncompFormatsSupported を呼び出す必要があります。 |
戻り値
インターフェイスの実装に依存する HRESULT 値を返します。HRESULT には、次の標準定数のいずれか、または一覧にないその他の値が含まれる場合があります。
| 戻り値のコード | 説明 |
|---|---|
| 失敗しました。 | |
| 引数が無効です。 | |
| メソッドがサポートされていません。 | |
| NULL ポインター引数です。 | |
| 成功しました。 |
解説(Remarks)
ビデオレンダラーは、非圧縮サーフェスを割り当てた後、デコーダーの IAMVideoAcceleratorNotify::SetUncompSurfacesInfo メソッドを呼び出します。
SetUncompSurfacesInfo メソッドは、作成された非圧縮サーフェスの数をデコーダーに通知します。
| dwActualUncompSurfacesAllocated | DWORD | in | 割り当てられたサーフェスの数。 |
戻り値
インターフェイスの実装に依存する HRESULT 値を返します。HRESULT には、次の標準定数のいずれか、または一覧にないその他の値が含まれる場合があります。
| 戻り値のコード | 説明 |
|---|---|
| 失敗しました。 | |
| 引数が無効です。 | |
| メソッドがサポートされていません。 | |
| NULL ポインター引数です。 | |
| 成功しました。 |
解説(Remarks)
ビデオレンダラーは、ビデオデコードのために非圧縮サーフェスを割り当てた後、このメソッドを呼び出します。
GetCreateVideoAcceleratorData メソッドは、ビデオアクセラレーターオブジェクトの作成に必要な情報を取得します。
| pGuid | GUID* | in | 使用中の DXVA プロファイルを指定する GUID へのポインター。 |
| pdwSizeMiscData | DWORD* | out | ppMiscData で返されるデータのサイズをバイト単位で受け取ります。 |
| ppMiscData | void** | out | DXVA_ConnectMode 構造体を格納するバッファーへのポインターを受け取ります。デコーダーは、構造体のメモリを割り当てるために CoTaskMemAlloc を呼び出す必要があります。呼び出し元は、CoTaskMemFree を呼び出してメモリを解放する必要があります。 |
戻り値
インターフェイスの実装に依存する HRESULT 値を返します。HRESULT には、次の標準定数のいずれか、または一覧にないその他の値が含まれる場合があります。
| 戻り値のコード | 説明 |
|---|---|
| 失敗しました。 | |
| 引数が無効です。 | |
| メソッドがサポートされていません。 | |
| NULL ポインター引数です。 | |
| 成功しました。 |
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IAMVideoAcceleratorNotify "{256A6A21-FBAD-11D1-82BF-00A0C9696C8F}" #usecom global IAMVideoAcceleratorNotify IID_IAMVideoAcceleratorNotify "{}" #comfunc global IAMVideoAcceleratorNotify_GetUncompSurfacesInfo 3 var,var #comfunc global IAMVideoAcceleratorNotify_SetUncompSurfacesInfo 4 int #comfunc global IAMVideoAcceleratorNotify_GetCreateVideoAcceleratorData 5 var,var,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IAMVideoAcceleratorNotify "{256A6A21-FBAD-11D1-82BF-00A0C9696C8F}" #usecom global IAMVideoAcceleratorNotify IID_IAMVideoAcceleratorNotify "{}" #comfunc global IAMVideoAcceleratorNotify_GetUncompSurfacesInfo 3 sptr,sptr #comfunc global IAMVideoAcceleratorNotify_SetUncompSurfacesInfo 4 int #comfunc global IAMVideoAcceleratorNotify_GetCreateVideoAcceleratorData 5 sptr,sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。