次の方法で共有


IOverlayNotify インターフェイス

IOverlayNotify インターフェイスは、デコーダなどのアップストリーム フィルタに、レンダリング ウィンドウへの変更の通知を提供する。このインターフェイスには、パレット、カラー キー、ウィンドウ位置への変更、表示される領域 (クリップ) の変化に関する通知が含まれる。

多くのソフトウェア ビデオ デコーダでは、デコーダがレンダラの入力ピンの IMemInputPin インターフェイスにメディア サンプルを渡し、その結果生成された圧縮解除後のイメージを、ビデオ レンダラが描画する。

ただし、一部のビデオ デコード フィルタ (主にハードウェア圧縮解除ボード) では、(多くの場合 VGA コネクタを使って) そのデコーダ内でイメージを描画する。このようなフィルタでは、IMemInputPin を使う必要はないが、代わりに、レンダラの入力ピンが提供する IOverlay インターフェイスを使える。デコーダは、ウィンドウの位置またはサイズが変化したとき、または現在のシステム パレットが変化したときに、このインターフェイスを通じて通知を受けることによって、カラー キーおよびパレットの組み込みや変更ができる。

独自の描画処理を行うデコーダは、IOverlayNotify インターフェイスおよび IOverlayNotify2 インターフェイスを実装する必要がある。レンダラは、ウィンドウのサイズまたは位置が変化したとき、システム パレットが変化したとき、または異なるカラー キーが使われたときに必ずこのインターフェイスを使って、デコーダに通知する。デコーダは、レンダラの入力ピンの IOverlay::Advise メソッドを呼び出して、コールバックを設定する必要がある。アドバイズ リンクが確立したら、該当するイベントが発生すると、レンダラがデコーダの IOverlayNotify メソッドを呼び出す。コールバックを取り消すには、IOverlay::Unadvise メソッドを使うこと。

ビデオ レンダラは、このインターフェイスのメソッドを呼び出す唯一のフィルタである。この呼び出しは、デフォルトのビデオ レンダラによって自動的に行われる。代替ビデオ レンダラを開発する場合、そのフィルタで IOverlay をサポートし、IOverlay::Advise の呼び出しでフィルタにこのインターフェイスが渡されるときは、このインターフェイスのメソッドを使う必要がある。

IOverlayNotify インターフェイスは、IUnknown から継承するメソッド以外に以下のメソッドも公開する。

メソッド 説明
OnPaletteChange ウィンドウのパレットが変化したことを示す通知を提供する。
OnClipChange ウィンドウの表示される領域が変化したことを示す通知を提供する。
OnColorKeyChange クロマ キーが変化したことを示す通知を提供する。
OnPositionChange 位置が変化したことを示す通知を提供する。