Overlay Mixer フィルター

[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayerIMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayerIMFMediaEngineAudio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]

Overlay Mixer フィルターは、DVD 再生用に特別に設計されたビデオ レンダラーであり、line-21 クローズド キャプション付きのビデオ ストリームをブロードキャストします。 オーバーレイ ミキサーでは、ビデオ ポート拡張機能 (VPEs) もサポートされており、PCI バス経由ではなく、グラフィックス カードにビデオを直接送信するハードウェア MPEG-2 デコーダーまたはアナログ TV チューナで動作できます。

注意

VPE シナリオを除き、 ビデオ 混合レンダラー 9 がオーバーレイ ミキサー フィルターよりも優先されるようになりました。

 

オーバーレイ ミキサーでは、レンダリングに DirectDraw が使用されます。 グラフィックス カード上にオーバーレイ サーフェスが必要です。 プライマリ ビデオ ストリームは、ピン 0 に接続する必要があります。 セカンダリ ストリーム (グラフィックスまたは DVD サブ画像キャプション閉じる) は、ピン 1 以降に接続されます。 オーバーレイミキサーは、セカンダリストリームをプライマリサフェイスに直接 blits します。混ぜ合わせたりアルファブレンドしたりすることはありません。

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

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

注意

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

 

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

 

解説

オーバーレイ ミキサーは、宛先カラー キーを使用して、ビデオ サーフェスとオーバーレイを混在させます。 カラー キーとセカンダリ ビデオをプライマリ サーフェスに Blit し、プライマリ ビデオをオーバーレイ サーフェスに送信します。 グラフィックス カードは、2 つのサーフェスをフレーム バッファーに合成します。

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

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

次の情報は、フィルター開発者、および DirectDraw 排他モードでオーバーレイ ミキサーを使用するゲーム開発者の利益のために提供されます。

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

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

注意

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

 

Windows Vista 以降では、ディスプレイ ドライバーがハードウェア オーバーレイをサポートしている場合、オーバーレイ ミキサーはデスクトップ ウィンドウ マネージャー (DWM) の構成を無効にします。 アプリケーションでは、オーバーレイ ミキサー フィルターの使用を避ける必要があります。代わりに VMR-9 または拡張ビデオ レンダラー (EVR) を使用してください。

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

通常、オーバーレイ ミキサーの入力ピンはアップストリーム ビデオ デコーダーに接続されます。 プライマリ ビデオ ストリームは、ピン 0 に接続する必要があります。 21 行目またはサブ画像ストリームは、ピン 1 以上に接続します。 デコーダーがホスト CPU のみを使用するソフトウェア デコーダーの場合、デコーダーと Pin 0 の間の接続は IMemInputPin 接続です。 デコーダーがハードウェア アクセラレーションを使用する場合、ピン 0 への接続で IAMVideoAccelerator 推論を使用する必要があります。 これら 2 種類の接続は相互に排他的です。

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

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

オーバーレイ ミキサーを使用すると、ビデオの四角形が正しくスケーリングされます。 ビデオ キャプチャには、プレビュー イメージのスケーリングとインターリーブされたビデオ フレームのキャプチャに関する特定の問題が含まれます。 ハードウェア ビデオ キャプチャ デバイス用のフィルターまたは WDM ドライバーを開発する場合は、これらのトピックの詳細については、 IVPConfigIVPNotify のリファレンス ページを参照してください。

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

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

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

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

DirectDraw 排他モード

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

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

DirectDraw 排他モードを使用して、Web ページなどのウィンドウレス レンダリングを実行することもできますが、このモードではオーバーレイ ミキサーが混在を実行しないため、これはお勧めしません。 これは、21 行目またはサブ画像データを表示できないことを意味します。

DirectShow フィルター