IVMRMonitorConfig9
COM公式ドキュメント
IVMRMonitorConfig9 インターフェースは、Video Mixing Renderer Filter 9(VMR-9)によって実装されます。
解説(Remarks)
Vmr9.h の前に DShow.h と D3d9.h をインクルードしてください。
メソッド 5
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
マルチモニター環境では、SetMonitor メソッドは、VMR が Direct3D デバイスを作成する際に使用するモニターを指定します。
| uDev | DWORD | in | モニターを指定するインデックス。 |
戻り値
このメソッドは HRESULT を返します。指定される可能性のある値には次のものがあります。
| 戻り値 | 説明 |
|---|---|
| 引数が無効です。uDev が有効なモニターに対応していません。 | |
| メソッドは成功しました。 | |
| VMR の入力ピンが接続された後は、モニターを設定できません。 |
解説(Remarks)
マルチモニター環境で、上流のデコーダーフィルターに接続する際に VMR が使用すべき Direct3D デバイスを指定するには、このメソッドを使用します。
Vmr9.h の前に DShow.h と D3d9.h をインクルードしてください。
GetMonitor メソッドは、この VMR のインスタンスがビデオ再生に使用しているモニターを取得します。
| puDev | DWORD* | out | 現在使用中のモニターを識別するインデックスを受け取るポインター。 |
戻り値
このメソッドは HRESULT を返します。指定される可能性のある値には次のものがあります。
| 戻り値 | 説明 |
|---|---|
| NULL ポインター引数です。 | |
| メソッドは成功しました。 | |
| アロケーター/プレゼンターがロードされていません。 |
解説(Remarks)
ミキサーフィルターを上流のデコーダーフィルターに接続する際に使用される Direct3D オブジェクトを判別するには、このメソッドを使用します。
Vmr9.h の前に DShow.h と D3d9.h をインクルードしてください。
SetDefaultMonitor メソッドは、今後作成されるすべての VMR インスタンスがビデオ再生に使用すべき既定のモニターを指定します。
| uDev | DWORD | in | 既定のモニターを指定するインデックス。 |
戻り値
このメソッドは HRESULT を返します。指定される可能性のある値には次の表のものがあります。
| 戻り値 | 説明 |
|---|---|
| 指定されたモニターを既定として設定できませんでした。 | |
| 引数が無効です。uDev が有効なモニターに対応していません。 | |
| メソッドは成功しました。 | |
| アロケーター/プレゼンターがロードされていません。 |
解説(Remarks)
マルチモニター環境で、上流のフィルターに接続する際に VMR が使用する既定の Direct3D デバイスを指定するには、このメソッドを使用します。既定の Direct3D デバイスは、特定の接続に対して SetMonitor メソッドによって上書きできます。
Vmr9.h の前に DShow.h と D3d9.h をインクルードしてください。
GetDefaultMonitor メソッドは、今後作成されるすべての VMR インスタンスがビデオ再生に使用する既定のモニターを取得します。
| puDev | DWORD* | out | システム上の既定のモニターを識別するインデックスを受け取るポインター。 |
戻り値
このメソッドは HRESULT を返します。指定される可能性のある値には次のものがあります。
| 戻り値 | 説明 |
|---|---|
| NULL ポインター引数です。 | |
| メソッドは成功しました。 | |
| アロケーター/プレゼンターがロードされていません。 |
解説(Remarks)
マルチモニター環境で、オーバーレイミキサーフィルターが上流のフィルターに接続する際に使用する既定の Direct3D デバイスを判別するには、このメソッドを使用します。
Vmr9.h の前に DShow.h と D3d9.h をインクルードしてください。
GetAvailableMonitors メソッドは、システム上で現在利用可能なモニターに関する情報を取得します。
| pInfo | VMR9MonitorInfo* | out | システム上の各モニターに関する情報を格納する VMR9MonitorInfo 構造体の配列へのポインター。 |
| dwMaxInfoArraySize | DWORD | in | 配列内のメンバーの最大数を指定します。 |
| pdwNumDevices | DWORD* | out | pInfo が NULL の場合、このパラメーターは必要な配列サイズを受け取ります。それ以外の場合は、実際に取得されたデバイス数を受け取ります。 |
戻り値
このメソッドは HRESULT を返します。指定される可能性のある値には次のものがあります。
| 戻り値 | 説明 |
|---|---|
| 引数が無効です。dwMaxInfoArraySize は 0 より大きくなければなりません。 | |
| NULL ポインター引数です。 | |
| メソッドは成功しました。 |
解説(Remarks)
ミキサーが上流のデコーダーフィルターに接続する際に使用できる Direct Draw デバイス識別子と、それに関連付けられたモニター情報の一覧を取得するには、このメソッドを使用します。
Vmr9.h の前に DShow.h と D3d9.h をインクルードしてください。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IVMRMonitorConfig9 "{46C2E457-8BA0-4EEF-B80B-0680F0978749}" #usecom global IVMRMonitorConfig9 IID_IVMRMonitorConfig9 "{}" #comfunc global IVMRMonitorConfig9_SetMonitor 3 int #comfunc global IVMRMonitorConfig9_GetMonitor 4 var #comfunc global IVMRMonitorConfig9_SetDefaultMonitor 5 int #comfunc global IVMRMonitorConfig9_GetDefaultMonitor 6 var #comfunc global IVMRMonitorConfig9_GetAvailableMonitors 7 var,int,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IVMRMonitorConfig9 "{46C2E457-8BA0-4EEF-B80B-0680F0978749}" #usecom global IVMRMonitorConfig9 IID_IVMRMonitorConfig9 "{}" #comfunc global IVMRMonitorConfig9_SetMonitor 3 int #comfunc global IVMRMonitorConfig9_GetMonitor 4 sptr #comfunc global IVMRMonitorConfig9_SetDefaultMonitor 5 int #comfunc global IVMRMonitorConfig9_GetDefaultMonitor 6 sptr #comfunc global IVMRMonitorConfig9_GetAvailableMonitors 7 sptr,int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。