IVMRMonitorConfig
COM公式ドキュメント
IVMRMonitorConfig インターフェイスは、Video Mixing Renderer Filter 7 (VMR-7) によって実装されます。
メソッド 5
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
マルチモニター環境では、SetMonitor メソッドは、この VMR インスタンスがビデオ再生に使用するモニターを指定します。
| pGUID | VMRGUID* | in | モニターを識別する VMRGUID 構造体へのポインター。 |
戻り値
HRESULT 値を返します。取り得る値には次のものがあります。
| 戻り値 | 説明 |
|---|---|
| 引数が無効です。 | |
| NULL ポインター引数です。 | |
| 成功しました。 | |
| アロケーター プレゼンターが読み込まれていません。 |
解説(Remarks)
マルチモニター環境でこのメソッドを使用して、上流のデコーダー フィルターに接続する際に VMR が使用すべき DirectDraw ドライバーを指定します。
VMRGUID 構造体の pGUID メンバーは、既定の DirectDraw デバイスを示す NULL であるか、または VMRGUID 構造体の GUID メンバーのアドレスと等しくなければなりません。それ以外の場合、このメソッドは E_INVALIDARG を返します。
指定した GUID がどのモニターにも対応しない場合、このメソッドは E_INVALIDARG を返します。
GetMonitor メソッドは、この VMR インスタンスがビデオ再生に使用しているモニターを取得します。
| pGUID | VMRGUID* | out | 呼び出し元が確保した VMRGUID 構造体へのポインター。このメソッドは、モニターを識別する GUID をこの構造体に格納します。 |
戻り値
HRESULT 値を返します。取り得る値には次のものがあります。
| 戻り値 | 説明 |
|---|---|
| NULL ポインター引数です。 | |
| 成功しました。 | |
| アロケーター プレゼンターが読み込まれていません。 |
SetDefaultMonitor メソッドは、今後生成されるすべての VMR インスタンスがビデオ再生に使用すべき既定のモニターを指定します。
| pGUID | VMRGUID* | in | モニターを識別する VMRGUID 構造体へのポインター。 |
戻り値
HRESULT 値を返します。取り得る値には次のものがあります。
| 戻り値 | 説明 |
|---|---|
| 指定したモニターを既定として設定できませんでした。 | |
| 引数が無効です。指定したモニターが存在しないか、pGUID パラメーターの書式が正しくありません。 | |
| NULL ポインター引数です。 | |
| 成功しました。 | |
| アロケーター プレゼンターが読み込まれていません。 |
解説(Remarks)
マルチモニター環境でこのメソッドを使用して、上流のフィルターに接続する際に VMR が使用する既定の DirectDraw デバイスを指定します。既定の DirectDraw デバイスは、特定の接続について SetMonitor メソッドによって上書きできます。
VMRGUID 構造体の pGUID メンバーは、既定の DirectDraw デバイスを示す NULL であるか、または VMRGUID 構造体の GUID メンバーのアドレスと等しくなければなりません。それ以外の場合、このメソッドは E_INVALIDARG を返します。
指定した GUID がどのモニターにも対応しない場合、このメソッドは E_INVALIDARG を返します。
GetDefaultMonitor メソッドは、今後生成されるすべての VMR インスタンスがビデオ再生に使用する既定のモニターを取得します。
| pGUID | VMRGUID* | out | システム上の既定のモニターを識別する VMRGUID 構造体へのポインター。 |
戻り値
HRESULT 値を返します。取り得る値には次のものがあります。
| 戻り値 | 説明 |
|---|---|
| NULL ポインター引数です。 | |
| 成功しました。 | |
| アロケーター プレゼンターが読み込まれていません。 |
解説(Remarks)
マルチモニター環境でこのメソッドを使用して、上流のフィルターに接続する際に VMR が使用する既定の DirectDraw デバイスを特定します。
GetAvailableMonitors メソッドは、システム上で現在利用可能なモニターに関する情報を取得します。
| pInfo | VMRMONITORINFO* | out | システム上の各モニターに関する情報を含む VMRMONITORINFO 構造体の配列へのポインター。 |
| dwMaxInfoArraySize | DWORD | in | 配列内のメンバーの最大数を指定します。 |
| pdwNumDevices | DWORD* | out | 取得したデバイス数を受け取る変数へのポインター。 |
戻り値
HRESULT 値を返します。取り得る値には次のものがあります。
| 戻り値 | 説明 |
|---|---|
| 引数が無効です。dwMaxInfoArraySize は 0 より大きくなければなりません。 | |
| NULL ポインター引数です。 | |
| 成功しました。 |
解説(Remarks)
このメソッドを使用して、上流のデコーダー フィルターに接続する際に VMR が使用できる DirectDraw デバイス GUID と、それに関連付けられたモニター情報の一覧を取得します。必要な配列サイズを pdwNumDevices パラメーターで受け取るには、pInfo に NULL を指定します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IVMRMonitorConfig "{9CF0B1B6-FBAA-4B7F-88CF-CF1F130A0DCE}" #usecom global IVMRMonitorConfig IID_IVMRMonitorConfig "{}" #comfunc global IVMRMonitorConfig_SetMonitor 3 var #comfunc global IVMRMonitorConfig_GetMonitor 4 var #comfunc global IVMRMonitorConfig_SetDefaultMonitor 5 var #comfunc global IVMRMonitorConfig_GetDefaultMonitor 6 var #comfunc global IVMRMonitorConfig_GetAvailableMonitors 7 var,int,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IVMRMonitorConfig "{9CF0B1B6-FBAA-4B7F-88CF-CF1F130A0DCE}" #usecom global IVMRMonitorConfig IID_IVMRMonitorConfig "{}" #comfunc global IVMRMonitorConfig_SetMonitor 3 sptr #comfunc global IVMRMonitorConfig_GetMonitor 4 sptr #comfunc global IVMRMonitorConfig_SetDefaultMonitor 5 sptr #comfunc global IVMRMonitorConfig_GetDefaultMonitor 6 sptr #comfunc global IVMRMonitorConfig_GetAvailableMonitors 7 sptr,int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。