IMixerOCX
COM公式ドキュメント
IMixerOCX インターフェースは Overlay Mixer に実装されています。
メソッド 8
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
OnDisplayChange メソッドは、モニターの表示設定が変更されたことを Overlay Mixer に通知します。(実装されていません。)
| ulBitsPerPixel | DWORD | in | 新しいビット/ピクセル設定を指定します。 |
| ulScreenWidth | DWORD | in | 新しい画面幅をピクセル単位で指定します。 |
| ulScreenHeight | DWORD | in | 新しい画面高さをピクセル単位で指定します。 |
戻り値
E_NOTIMPL を返します。
GetAspectRatio メソッドは、Overlay Mixer の現在のアスペクト比設定を返します。(現在は実装されていません。)
| pdwPictAspectRatioX | DWORD* | out | X 方向の値を受け取るポインター。 |
| pdwPictAspectRatioY | DWORD* | out | Y 方向の値を受け取るポインター。 |
戻り値
E_NOTIMPL を返します。
GetVideoSize メソッドは、ビデオ矩形の現在のサイズを取得します。
| pdwVideoWidth | DWORD* | out | ビデオの幅をピクセル単位で受け取るポインター。 |
| pdwVideoHeight | DWORD* | out | ビデオの高さをピクセル単位で受け取るポインター。 |
戻り値
メソッドが成功すると、S_OK を返します。
GetStatus メソッドは、Overlay Mixer の現在の状態を返します。(実装されていません。)
| pdwStatus | DWORD** | out | Overlay Mixer の現在の状態を受け取るポインター。 |
戻り値
E_NOTIMPL を返します。
OnDraw メソッドは、ビデオ矩形を描画するよう Overlay Mixer に指示します。
| hdcDraw | HDC | in | 親ウィンドウに関連付けられたデバイスコンテキストを指定します。 |
| prcDraw | RECT* | in | ビデオ矩形の矩形座標を指定します。 |
戻り値
メソッドが成功すると、S_OK を返します。
解説(Remarks)
ここで提供される HDC はキャッシュしないでください。
SetDrawRegion メソッドは、ビデオ矩形およびクリッピング矩形の位置と寸法を画面座標で指定します。
| lpptTopLeftSC | POINT* | in | ビデオ矩形の左上を画面座標で指定します。(Overlay Mixer フィルターはこのパラメーターを無視します。このパラメーターは NULL に設定してください。) |
| prcDrawCC | RECT* | in | ビデオ矩形を画面座標で指定します。このパラメーターを NULL にすることはできません。 |
| lprcClip | RECT* | in | クリッピング矩形を画面座標で指定します。このパラメーターを NULL にすることはできません。 |
戻り値
このメソッドは HRESULT 値を返します。取り得る値には次の表のものが含まれます。
| 戻り値 | 説明 |
|---|---|
| メソッドが成功しました。 | |
| prcDrawCC または lprcClip のいずれかが NULL です。 |
Advise メソッドは、コールバック通知のためにクライアントの IMixerOCXNotify インターフェースへのポインターを Overlay Mixer に提供します。
| pmdns | IMixerOCXNotify* | in | クライアントの IMixerOCXNotify インターフェースを指定します。 |
戻り値
メソッドが成功すると、S_OK を返します。
解説(Remarks)
Overlay Mixer からのコールバックを受け取りたい場合は、このメソッドを呼び出します。
UnAdvise メソッドは、クライアントの IMixerOCXNotify インターフェースへのポインターを解放するよう Overlay Mixer に指示します。
戻り値
メソッドが成功すると、S_OK を返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IMixerOCX "{81A3BD32-DEE1-11D1-8508-00A0C91F9CA0}" #usecom global IMixerOCX IID_IMixerOCX "{}" #comfunc global IMixerOCX_OnDisplayChange 3 int,int,int #comfunc global IMixerOCX_GetAspectRatio 4 var,var #comfunc global IMixerOCX_GetVideoSize 5 var,var #comfunc global IMixerOCX_GetStatus 6 var #comfunc global IMixerOCX_OnDraw 7 sptr,var #comfunc global IMixerOCX_SetDrawRegion 8 var,var,var #comfunc global IMixerOCX_Advise 9 sptr #comfunc global IMixerOCX_UnAdvise 10 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IMixerOCX "{81A3BD32-DEE1-11D1-8508-00A0C91F9CA0}" #usecom global IMixerOCX IID_IMixerOCX "{}" #comfunc global IMixerOCX_OnDisplayChange 3 int,int,int #comfunc global IMixerOCX_GetAspectRatio 4 sptr,sptr #comfunc global IMixerOCX_GetVideoSize 5 sptr,sptr #comfunc global IMixerOCX_GetStatus 6 sptr #comfunc global IMixerOCX_OnDraw 7 sptr,sptr #comfunc global IMixerOCX_SetDrawRegion 8 sptr,sptr,sptr #comfunc global IMixerOCX_Advise 9 sptr #comfunc global IMixerOCX_UnAdvise 10 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。