次の方法で共有


オーバーレイ ミキサ フィルタ

オーバーレイ ミキサ フィルタは、Line 21 クローズド キャプション付きの DVD 再生およびブロードキャスト ビデオ ストリーム用に設計されたビデオ レンダラである。オーバーレイ ミキサは、ビデオ ポート エクステンション (VPE) もサポートしている。VPE は、オーバーレイ ミキサによって、データを PCI バスを介さずに直接グラフィック カードに送信するハードウェア MPEG-2 デコーダまたはアナログ TV チューナーと共に動作できるようになる。

注 : VPE の場合を除いて、現在は Video Mixing Renderer9 の方がオーバーレイ ミキサ フィルタよりも優先される。

オーバーレイ ミキサはレンダリングのために Microsoft® DirectDraw® を使う。オーバーレイ ミキサは、グラフィック カードのオーバーレイ サーフェイスを必要とする。プライマリ ビデオ ストリームはピン 0 に、セカンダリ ストリーム (クローズド キャプション グラフィックまたは DVD サブピクチャ) はピン 1 以降に接続される。オーバーレイ ミキサはセカンダリ ストリームをプライマリ サーフェイスに直接ブリットし、ミキシングやアルファ ブレンディングは行わない。

オーバーレイ ミキサは、ウィンドウ管理のためにビデオ レンダラを使う。ビデオ レンダラは、オーバーレイ ミキサの出力ピンに接続する。

このフィルタは、アプリケーションが IDvdGraphBuilder インターフェイスおよび ICaptureGraphBuilder2 インターフェイスを使ってグラフを作成するときに、自動的にフィルタ グラフに追加される。フィルタ グラフ マネージャはオーバーレイ ミキサをグラフに自動的に追加はしない。

注 : 以下の表で、入力ピン 0 で使えるメディア サブタイプはハードウェアに依存する。オーバーレイ ミキサは、DirectDraw サーフェイスを作成するまで、特定のサブタイプがサポートされているかどうかを確認できない。このため、あるサブタイプがサポートされているかどうかをアップストリーム フィルタが判断するためには、そのサブタイプを使って接続を試みる必要がある。

フィルタ インターフェイス IAMOverlayFXIAMVideoDecimationPropertiesIBaseFilterIDDrawExclModeVideoIKsPropertySetIMediaPositionIMediaSeekingIMixerOCXIQualPropIVPNotifyIVPNotify2
入力ピン メディア タイプ メジャー タイプ : MEDIATYPE_Video
サブタイプ : 
  • MEDIASUBTYPE_Overlay (ピン 0 のみ)
  • DirectDraw YUV フォーマット : MEDIASUBTYPE_YUVxx (ピン 0 のみ)

DirectDraw ビデオ アクセラレーション フォーマット : MEDIASUBTYPE_DVAxxx (ピン 0 のみ)

  • Microsoft® DirectDraw® RGB フォーマット : MEDIASUBTYPE_RGBxx (すべての入力ピン)

    フォーマット タイプ : Format_VIDEOINFO、Format_VIDEOINFO2

入力ピン インターフェイス IAMVideoAcceleratorIKsPinIKsPropertySetIMemInputPinIMixerPinConfigIMixerPinConfig2IOverlay (ピン 0 のみ)、IPinIPinConnectionIQualityControlIVPNotifyIVPNotify2
出力ピン メディア タイプ MEDIATYPE_Video、MEDIASUBTYPE_Overlay
出力ピン インターフェイス IMediaPositionIMediaSeekingIPinIQualityControl
フィルタ CLSID CLSID_OverlayMixer
プロパティ ページ CLSID プロパティ ページなし。
実行モジュール qdvd.dll
メリット MERIT_DO_NOT_USE
フィルタ カテゴリ CLSID_LegacyAmFilterCategory

注意

オーバーレイ ミキサは、転送先カラー キーを使ってビデオ サーフェイスとオーバーレイをミックスする。カラー キーとセカンダリ ビデオをプライマリ サーフェイスにブリットし、プライマリ ビデオをオーバーレイ サーフェイスに送信する。その後、グラフィック カードが 2 つのサーフェイスをフレーム バッファに合成する。

アプリケーションは IMixerPinConfig2 インターフェイスを介してオーバーレイ ミキサに対する一部の動作を制御できる。このセクションで後から説明するように、ゲーム開発者はオーバーレイ ミキサを使ってビデオを DirectDraw 排他モードで表示できる。ただし、Video Mixing Renderer フィルタ 9 (VMR-9) ではゲームのビデオに対するサポートが改善されている。詳細については、「Video Mixing Renderer の使用」を参照すること。

以下の情報は、フィルタ開発者や、オーバーレイ ミキサを DirectDraw 排他モードで使うゲーム開発者を対象にしている。

オーバーレイ ミキサの内部動作

オーバーレイ ミキサは、入力ストリームごとに入力ピンを公開する。一般には、ビデオ データ用のピン 0、Line 21 および DVD サブピクチャ データ用のピン 1 とピン 2 の 3 つの入力ピンがある。内部的には、オーバーレイ ミキサはデスクトップ全体を構成するプライマリ サーフェイスと、ピン 0 のビデオ ストリームのサイズによってその矩形が定義されるオーバーレイ サーフェイスを持つ DirectDraw オブジェクトを作成する。デコーダがカラー キーを指定しない場合、オーバーレイ ミキサは指定のカラー キーとして、最近のグラフィック カードの場合はダーク グレー、古い 256 色カードの場合はマッゼンタを使う。

注 : デコーダがオーバーレイ サーフェイスの同じ場所に 2 つのセカンダリ ビデオ ストリームを同時に出力する場合、結果は未定義である。(これは、サブピクチャ ストリームと Line 21 ストリームを含む DVD で発生する場合がある。) ビデオにちらつきが発生するか、いずれか一方のストリームだけが表示される。

Windows 98SE および Windows 2000 では、オーバーレイ ミキサはセカンダリ モニタ上のビデオ ポート接続をサポートしない。この場合、ピン接続は失敗する。Windows Me と Windows XP にはこの制限はない。

ビデオ デコーダとのアップストリーム接続

通常、オーバーレイ ミキサの入力ピンはアップストリーム ビデオ デコーダに接続する。プライマリ ビデオ ストリームはピン 0 に接続する必要がある。Line 21 またはサブピクチャ ストリームはピン 1 以降のピンに接続する。デコーダが、ホスト CPU を排他的に使うソフトウェア デコーダの場合、デコーダとピン 0 との間の接続は、標準 IMemInputPin 接続になる。デコーダがハードウェア アクセラレーションを利用する場合、ピン 0 への接続は IAMVideoAccelerator インターフェイスを使う必要がある。これら 2 種類の接続は互いに排他的である。

デコーダがオーバーレイ サーフェイスに直接描画する場合は、ピン 0 で IOverlay インターフェイスを使用し、IOverlayNotify インターフェイスを実装する必要がある。

ハードウェア デコーダをラップしてビデオ ポート経由でオーバーレイ ミキサに接続するフィルタは、IVPConfig インターフェイスを実装する必要がある。オーバーレイ ミキサは IVPNotify インターフェイスを実装する。これらの 2 つのインターフェイスにより、デコーダが必要なオーバーレイ サーフェイスを指定できる一方、オーバーレイ ミキサは、ビデオ メモリ内でのそれらのサーフェイスの位置をデコーダに通知することが可能になる。

オーバーレイ ミキサはビデオ矩形が正常にスケーリングされることも保証する。ビデオ キャプチャにはプレビュー イメージのスケーリングとインターリーブされたビデオ フレームのキャプチャに関して各種の問題が伴う。ハードウェア ビデオ キャプチャ デバイスのフィルタまたは WDM ドライバの開発に関する詳細については、「IVPConfig」および「IVPNotify」を参照すること。

オーバーレイ ミキサは、1394 または USB キャプチャ シナリオでは使われない。オーバーレイ ミキサは、PCI バス上でのビデオ キャプチャに使われる。

ビデオ レンダラとのダウンストリーム接続

オーバーレイ ミキサには、ビデオ レンダラ フィルタに接続する出力ピンがある。この場合、ビデオ レンダラはビデオをレンダリングせず、ビデオ ウィンドウを管理するだけである。

ピン接続は、IMemInputPin インターフェイスではなく、IOverlay インターフェイスを使用する。ビデオ レンダラは、矩形クリッピングを管理する DirectDraw に、オーバーレイ ミキサ経由でウィンドウ ハンドルを渡す。アプリケーションは、フィルタ グラフ マネージャの IVideoWindow および IBasicVideo2 インターフェイスを介してビデオ レンダラを制御できる。

DirectDraw 排他モード

オーバーレイ ミキサの DirectDraw 排他モードは、ゲームで画面の一部にビデオを表示できるようにする。このモードでは、オーバーレイ ミキサは、ビデオ レンダラによって提供されたウィンドウ内ではなく、ゲーム アプリケーションによって作成された DirectDraw サーフェイスにビデオを直接レンダリングする。これにより、ゲームはカラー キーを制御できる。オーバーレイ ミキサは、DirectDraw 排他モードでは 1 つの入力ピンだけを公開する。このため、このモードでは、Line 21 または DVD サブピクチャのミキシングは実行できない。

オーバーレイ ミキサを DirectDraw 排他モードで使うには、オーバーレイ ミキサのインスタンスを作成し、フィルタ グラフを作成する前にその IDDrawExclModeVideo インターフェイスを問い合わせる。次に IDDrawExclModeVideo::SetDDrawSurface を呼び出して、レンダリングのための DirectDraw サーフェイスを指定する。このモードに関する 1 つの重要な制限は、ゲームが実際のビデオ ビットにアクセスできない点である。IDDrawExclModeVideo を使う場合、アプリケーションはプライマリ サーフェイスを作成し、オーバーレイ ミキサはオーバーレイ サーフェイスを作成する。

また、DirectDraw 排他モードを使って、Web ページなどでウィンドウレス レンダリングを行うこともできるが、このような処理は推奨しない。理由は、オーバーレイ ミキサがこのモードでミキシングを行わないからである。ミキシングが行われないため、Line 21 またはサブピクチャ データを表示することができない。ウィンドウレス モードで DVD 再生アプリケーションを作成する場合は、MSWebDVD ActiveX コントロールの使用が推奨される。