IDDrawExclModeVideoCallback
COM公式ドキュメント
IDDrawExclModeVideoCallback インターフェイスは、IDDrawExclModeVideo インターフェイスのためのコールバックインターフェイスです。このコールバックインターフェイスにより、アプリケーションはオーバーレイの位置、サイズ、可視性などの変更に関する同期通知を受け取り、ビデオの可視性、サイズ、位置を調整できます。これにより、再生の開始時、終了時、または再生中のカラーキーのちらつきを回避できます。アプリケーションはこのインターフェイスを実装する必要があります。いずれのメソッドもビデオ処理をブロックしたり遅延させたりしないことが重要です。そうしないと再生に問題が生じるためです。IDDrawExclModeVideo をサポートするフィルターを作成する場合、またはアプリケーションが適切なタイミングでカラーキーを描画できるようにコールバックを生成する必要がある場合に、このインターフェイスを使用してください。
メソッド 3
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
OnUpdateOverlay メソッドは、ビデオのオーバーレイサーフェスが表示、非表示、サイズ変更、または位置変更されようとしていることをアプリケーションに通知し、アプリケーションがウィンドウを適切に再描画できるようにします。
| bBefore | BOOL | in | 呼び出しがオーバーレイ関連の変更の前後どちらで行われるかを指定するブール値。TRUE は変更前、FALSE は変更後を指定します。 |
| dwFlags | DWORD | in | 何が変更されようとしているか、または何が変更されたかを指定する AM_OVERLAY_NOTIFY_FLAGS 列挙体の値。 |
| bOldVisible | BOOL | in | 古いウィンドウが表示されているかどうかを指定するブール値。TRUE は古いウィンドウが表示されていることを意味します。 |
| prcOldSrc | RECT* | in | DirectDraw サーフェスの古いソース位置を表す矩形へのポインター。 |
| prcOldDest | RECT* | in | オーバーレイサーフェス内の矩形の古い転送先位置を表す矩形へのポインター。 |
| bNewVisible | BOOL | in | 新しいウィンドウが表示されているかどうかを指定するブール値。TRUE は新しいウィンドウが表示されていることを意味します。 |
| prcNewSrc | RECT* | in | DirectDraw サーフェスの新しいソース位置を表す矩形へのポインター。 |
| prcNewDest | RECT* | in | オーバーレイサーフェス内の矩形の新しい転送先位置を表す矩形へのポインター。 |
戻り値
HRESULT 値を返します。取り得る値には次のものがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| パラメーターが無効です。 |
解説(Remarks)
アプリケーションは、オーバーレイ関連の変更が発生する前に一度、変更が完了した後に一度、このメソッドを呼び出す必要があります。変更前の呼び出しでは、アプリケーションがこのメソッドの実行を完了するまでオーバーレイの変更は発生しません。
OnUpdateColorKey メソッドは、カラーキーが変更されたことをアプリケーションに通知し、アプリケーションが新しいカラーキーを使用してビデオ上にグラフィックスをオーバーレイできるようにします。
| pKey | COLORKEY* | in | キーの種類とパレットインデックスを含む COLORKEY 構造体へのポインター。 |
| dwColor | DWORD | in | 現在のディスプレイモードが 8 ビットパレットの場合、pKey で返される COLORKEY の 8 ビットパレットインデックスを示す値。それ以外の場合は、現在のディスプレイモードのピクセル形式でカラーキーを表す値です。 |
戻り値
HRESULT 値を返します。取り得る値には次のものがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| パラメーターのいずれかが無効です。 |
OnUpdateSize メソッドは、ビデオ矩形のサイズが変更されようとしていることをアプリケーションに通知します。
| dwWidth | DWORD | in | ビデオストリームの新しい幅(ピクセル単位)。 |
| dwHeight | DWORD | in | ビデオストリームの新しい高さ(ピクセル単位)。 |
| dwARWidth | DWORD | in | アスペクト比の新しい水平方向の値。 |
| dwARHeight | DWORD | in | アスペクト比の新しい垂直方向の値。 |
戻り値
HRESULT 値を返します。
解説(Remarks)
このメソッドは、ビデオストリーム内の矩形のサイズが変更されたとき(例えば 704x480 から 640x480 へ)に呼び出されます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IDDrawExclModeVideoCallback "{913C24A0-20AB-11D2-9038-00A0C9697298}" #usecom global IDDrawExclModeVideoCallback IID_IDDrawExclModeVideoCallback "{}" #comfunc global IDDrawExclModeVideoCallback_OnUpdateOverlay 3 int,int,int,var,var,int,var,var #comfunc global IDDrawExclModeVideoCallback_OnUpdateColorKey 4 var,int #comfunc global IDDrawExclModeVideoCallback_OnUpdateSize 5 int,int,int,int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IDDrawExclModeVideoCallback "{913C24A0-20AB-11D2-9038-00A0C9697298}" #usecom global IDDrawExclModeVideoCallback IID_IDDrawExclModeVideoCallback "{}" #comfunc global IDDrawExclModeVideoCallback_OnUpdateOverlay 3 int,int,int,sptr,sptr,int,sptr,sptr #comfunc global IDDrawExclModeVideoCallback_OnUpdateColorKey 4 sptr,int #comfunc global IDDrawExclModeVideoCallback_OnUpdateSize 5 int,int,int,int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。