Overlay Mixer フィルター

オーバーレイ Mixer フィルターは、DVD の再生および、21行目のクローズドキャプションを使用したブロードキャストビデオストリーム専用に設計されたビデオレンダラーです。 オーバーレイ Mixer では、ビデオポート拡張機能 (vpes) もサポートされています。これにより、PCI バス経由ではなく、グラフィックカードに直接ビデオを送信するハードウェア MPEG 2 デコーダーやアナログ TV チューナーを使用できるようになります。

注意

ビデオミックスレンダラー 9は、VPE シナリオを除き、オーバーレイ Mixer フィルターよりも優先されるようになりました。

オーバーレイ Mixer は、表示に DirectDraw を使用します。 グラフィックスカードにオーバーレイサーフェイスが必要です。 プライマリビデオストリームは、ピン0に接続されている必要があります。 セカンダリストリーム (クローズドキャプショングラフィックスまたは DVD サブピクチャ) は、ピン1以上に接続されています。 オーバーレイ Mixer、セカンダリストリームをプライマリ suface に直接 blits します。混合やアルファブレンドは行われません。

オーバーレイ Mixer は、ウィンドウ管理に Video レンダラーを使用します。 ビデオレンダラーは、オーバーレイ Mixer の出力ピンに接続します。

このフィルターは、アプリケーションが IDvdGraphBuilder インターフェイスと ICaptureGraphBuilder2 インターフェイスを使用してグラフを作成するときに、フィルターグラフに自動的に追加されます。 フィルター Graph マネージャーは、オーバーレイ Mixer をグラフに自動的に追加しません。

注意

次の表では、入力ピン0で受け入れられるメディアのサブタイプはハードウェアに依存しています。 オーバーレイ Mixer は、DirectDraw サーフェイスを作成するまで、特定のサブタイプがサポートされているかどうかを判断できません。 そのため、上流フィルターを使用してサブタイプがサポートされているかどうかを判断する唯一の方法は、そのサブタイプとの接続を試行することです。

ラベル
インターフェイスのフィルター処理 IAMOverlayFXiamvideoの mationpropertiesibasefilteriddrawexclmodevideoIKsPropertySetIMediaPositionibasefilterimixerocxIQualPropibasefilterIVPNotify2
入力ピンメディアの種類 メジャーの種類: MEDIATYPE_Video
サブ
  • MEDIASUBTYPE_Overlay (ピン0のみ)
  • DirectDraw の YUV 形式 (pin 0 のみ)
  • DirectDraw ビデオアクセラレーション形式 (ピン0のみ)
  • DirectDraw RGB 形式 (すべての入力ピン)
形式の種類:
  • Format_VIDEOINFO
  • Format_VIDEOINFO2
入力ピンインターフェイス IamvideoacceleratorIKsPinIKsPropertySetimeminputpinimixerpinconfigIMixerPinConfig2ioverlay (pin 0 のみ)、 ipinipinconnectionIQualityControlivpnotifyIVPNotify2
出力ピンメディアの種類 MEDIATYPE_Video、MEDIASUBTYPE_Overlay
出力ピンのインターフェイス IMediaPositionimediaseekingipinIQualityControl
フィルター CLSID CLSID_OverlayMixer
プロパティページの CLSID プロパティページがありません。
[実行可能ファイル] qdvd.dll
昇給 MERIT_DO_NOT_USE
フィルターカテゴリ CLSID_LegacyAmFilterCategory

解説

オーバーレイ Mixer では、コピー先の色キーを使用して、オーバーレイとビデオサーフェイスを混在させます。 カラーキーとセカンダリビデオをプライマリ画面に blits し、プライマリビデオをオーバーレイ画面に送信します。 その後、グラフィックスカードは、2つのサーフェイスをフレームバッファーに合成します。

グラフィックスドライバーがハードウェアオーバーレイをサポートしているかどうかをテストするには、 IDirectDraw7:: GetCaps を呼び出します。 Ddcaps 構造体の dwMaxVisibleOverlays フィールドが0より大きい場合、ドライバーはハードウェアオーバーレイをサポートします。

アプリケーションでは、 IMixerPinConfig2インターフェイスを使用して、オーバーレイ Mixer の一部の動作を制御できます。 ゲーム開発者は、オーバーレイ Mixer を使用して、このセクションの後半で説明するように、ビデオを DirectDraw エクスクルーシブモードで表示できます。 ビデオのミキシングレンダラーフィルター 9 (VMR-9) では、ゲームでのビデオのサポートが向上しています。 詳細については、「 ビデオミキシングレンダラーの使用」を参照してください。

次の情報は、フィルター開発者の利点と、DirectDraw エクスクルーシブモードでオーバーレイ Mixer を使用するゲーム開発者を対象としています。

オーバーレイ Mixer 内部操作

オーバーレイ Mixer は、受信ストリームごとに入力ピンを公開します。 通常、3つの入力ピン (ビデオデータにはピン0、21行目と DVD サブピクチャデータにはピン1と 2) があります。 内部的には、オーバーレイ Mixer は、デスクトップ全体と、ピン0のビデオストリームのサイズによって四角形が定義されているオーバーレイサーフェイスを含む DirectDraw オブジェクトを作成します。 デコーダーでカラーキーが指定されていない場合、オーバーレイ Mixer では既定の色キーが使用されます。これは、最新のグラフィックスカードの場合はダークグレー、古い256カラーカードの場合はマゼンタです。

注意

デコーダーが2つのセカンダリビデオストリームをオーバーレイサーフェイス上の同じ場所に同時に提供する場合、結果は未定義になります。 (これは、サブピクチャと21行のストリームを含む Dvd で発生することがあります)。ビデオがちらつく場合や、ストリームが1つだけ表示される場合があります。

Windows Vista 以降では、ディスプレイドライバーがハードウェアオーバーレイをサポートしている場合、オーバーレイ Mixer はデスクトップウィンドウマネージャー (DWM) コンポジションを無効にします。 アプリケーションでは、オーバーレイ Mixer フィルターを使用しないようにする必要があります。代わりに、VMR-9 または Enhanced Video Renderer (EVR) を使用してください。

ビデオデコーダーを使用したアップストリーム接続

通常、オーバーレイ Mixer の入力ピンは上流のビデオデコーダーに接続します。 プライマリビデオストリームは、ピン0に接続する必要があります。 21行目またはサブピクチャストリームは、ピン1以上に接続します。 デコーダーがホストの CPU のみを使用するソフトウェアデコーダーである場合、デコーダーと Pin 0 の間の接続は Imeminputpin 接続です。 デコーダーがハードウェアアクセラレータを使用する場合、ピン0への接続では、 Iamvideoaccelerator インターフェイスを使用する必要があります。 この2種類の接続は相互に排他的です。

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

ハードウェアデコーダーをラップし、ビデオポートを介してオーバーレイ Mixer に接続するフィルターでは、 ivpconfigインターフェイスを実装する必要があります。 オーバーレイ Mixer は、 ivpnotifyインターフェイスを実装します。 この2つのインターフェイスを使用すると、デコーダーは必要なオーバーレイサーフェイスを指定でき、オーバーレイ Mixer によって、ビデオメモリ内のそれらのサーフェイスの場所をデコーダーに通知できます。

オーバーレイ Mixer では、ビデオの四角形が正しく拡大縮小されることも保証されます。 ビデオキャプチャには、プレビューイメージのスケーリングとインターリーブビデオフレームのキャプチャに関して、特定の問題が伴います。 ハードウェアビデオキャプチャデバイス用のフィルターまたは WDM ドライバーを開発している場合、これらのトピックの詳細については、 Ivpconfig および ivpconfig のリファレンスページを参照してください。

オーバーレイ Mixer は、1394または USB キャプチャシナリオでは使用されません。 PCI バス上のビデオキャプチャに使用されます。

ビデオレンダラーを使用したダウンストリーム接続

オーバーレイ Mixer には、ビデオレンダラーフィルターに接続するための出力ピンがあります。 この場合、ビデオレンダラーはビデオをレンダリングしません。単にビデオウィンドウを管理します。

Pin 接続では、 Imeminputpinインターフェイスではなく、 ioverlayインターフェイスが使用されます。 ビデオレンダラーは、オーバーレイ Mixer を通じてウィンドウハンドルを DirectDraw に渡し、四角形の領域を管理します。 アプリケーションでは、フィルター Graph マネージャーの ivideowindowインターフェイスと IBasicVideo2インターフェイスを使用して、ビデオレンダラーを制御できます。

DirectDraw 排他モード

オーバーレイ Mixer の DirectDraw 排他モードでは、ゲームは画面の一部にビデオを表示できます。 このモードでは、オーバーレイ Mixer は、ビデオレンダラーによって提供されるウィンドウではなく、ゲームアプリケーションによって作成された DirectDraw 表面にビデオを直接レンダリングします。 これにより、ゲームで色キーを制御できるようになります。 オーバーレイ Mixer は、DirectDraw 排他モードで1つの入力ピンのみを公開します。つまり、このモードでは、21行または DVD サブピクチャを混在させることはできません。

DirectDraw 排他モードでオーバーレイ Mixer を使用するには、オーバーレイ Mixer のインスタンスを作成し、フィルターグラフを構築する前に、 iddrawexclmodevideoインターフェイスに対してクエリを実行します。 次に、 Iddrawexclmodevideo:: SetDDrawSurface を呼び出して、表示する DirectDraw 画面を指定します。 このモードの大きな制限の1つは、ゲームが実際のビデオビットにアクセスできないことです。 iddrawexclmodevideo を使用すると、アプリケーションによってプライマリサーフェイスが作成され、オーバーレイ Mixer によってオーバーレイサーフェイスが作成されます。

DirectDraw exclusive mode を使用して、Web ページなどのウィンドウなしのレンダリングを実行することもできます。ただし、オーバーレイ Mixer ではこのモードでの混在は実行されないため、この方法はお勧めしません。 これは、21行目またはサブピクチャデータを表示できないことを意味します。

DirectShow仕分け