Microsoft DirectX 8.0 |
オーバーレイ ミキサー フィルタは、基本的には Microsoft® DirectDraw® ベースのビデオ レンダラである。このフィルタは転送先カラー キーイングを使用して、ビデオ サーフェスを Line 21 クローズド キャプションまたはデジタル ビデオ ディスク (DVD) サブピクチャ データなどのシナリオのオーバーレイとミキシングする。このフィルタは、主に DVD 再生アプリケーションやビデオ キャプチャ アプリケーションで使用されるが、ビデオ サーフェスにオーバーレイを適用する必要がある任意のシナリオで使用できる。
アプリケーションが IDVDGraphBuilder インターフェイスおよび ICaptureGraphBuilder2 インターフェイスを使用してグラフを作成すると、このフィルタは自動的にフィルタ グラフに追加される。メリットが MERIT_DO_NOT_USE であるので、オーバーレイ ミキサーは、ファイルのレンダリング時にフィルタ グラフ マネージャによって自動的にグラフに適用されることはない。ゲーム アプリケーションはオーバーレイ ミキサーを制限付きで使用して、ビデオをゲーム画面に追加することができる。
(注 : オーバーレイ ミキサー 2 フィルタは、2 つの点を除いてオーバーレイ ミキサーと同じである。オーバーレイ ミキサーは、VIDEOINFO および VIDEOINFO2 フォーマット タイプをサポートするが、オーバーレイ ミキサー 2 は VIDEOINFO2 フォーマット タイプしかサポートしない。そして、オーバーレイ ミキサー 2 のメリットは MERIT_UNLIKELY で、これはフィルタ グラフ マネージャを使用してファイルをレンダリングするときに、場合によっては自動的にグラフに適用されることがあることを意味する。このフィルタは、主に TV プレビュー/キャプチャ グラフに使用される。)
アプリケーションは、オーバーレイ ミキサーの特定の動作を IMixerPinConfig2 インターフェイスを介して制御することができるが、このトピックで説明するように、アプリケーション開発者はミキサーの内部動作を気にする必要はない。以下の情報は、フィルタ開発者や、オーバーレイ ミキサーの DirectDraw 排他モードを使用するゲーム開発者を対象にしている。
オーバーレイ ミキサーは、入力ストリームごとに入力ピンを公開する。一般には、ビデオ データ用のピン 0、Line 21 および DVD サブピクチャ データ用のピン 1 および 2 の 3 つの入力ピンがある。内部的にはオーバーレイ ミキサーは DirectDraw を使用してビデオをレンダリングする。オーバーレイ ミキサーは、デスクトップ全体を構成するプライマリ サーフェスと、ピン 0 に接続されたビデオ ストリームのサイズによってその矩形が定義されるオーバーレイ サーフェスを持つ DirectDraw オブジェクトを作成する。デコーダがカラー キーを指定しない場合、オーバーレイ ミキサーはデフォルトのカラー キーとして、最近のグラフィックス カードの場合はダーク グレー、古い 256 色カードの場合はマゼンタを使用する。
注 : オーバーレイ ミキサーの現在のバージョンでは、オーバーレイ サーフェス上の同じ場所で同時にレンダリングする 2 つのビデオ ストリームをデコーダが渡した場合、その結果は不定である。このような状況は、サブピクチャと Line 21 ストリームの両方を含む DVD で発生することがある。ビデオにフリッカーが発生するか、いずれか一方のストリームが表示される。
通常、オーバーレイ ミキサーの入力ピンは、アップストリームのビデオ デコーダ (別のデコーダが Line 21 または DVD サブピクチャ データを処理する場合は複数のデコーダ) に接続する。入力ビデオ データは、必ずオーバーレイ ミキサーのピン 0 に接続する必要がある。Line 21 またはサブピクチャ データ ストリームは、それが同じビデオ デコーダから入力されるかどうかに関係なく、ピン 1 またはそれ以降に接続する。デコーダが、ホスト CPU を排他的に使用するソフトウェア デコーダの場合、デコーダとオーバーレイ ミキサーのピン 0 との間の接続は、標準 IMemInputPin インターフェイス接続になる。デコーダがハードウェア アクセラレーションを利用する場合、オーバーレイ ミキサーのピン 0 への接続は IAMVideoAccelerator 接続でなければならない。これら 2 種類の接続は互いに排他的である。
ハードウェア デコーダをラップしてビデオ ポート経由でオーバーレイ ミキサーに接続するフィルタは、IVPConfig を実装する必要がある。オーバーレイ ミキサーは IVPNotify インターフェイスを実装する。このフィルタは、各種の制御情報を設定および取得するためにデコーダ上の IVPConfig で使用される。このメカニズムにより、デコーダが必要なオーバーレイ サーフェスに関する情報を指定できる一方、オーバーレイ ミキサーは、ビデオ メモリ内でのそれらのサーフェスの位置をデコーダに通知することが可能になる。またオーバーレイ ミキサーは、ビデオ矩形が正常にスケーリングされることを保証する。ビデオ キャプチャ シナリオは、プレビュー イメージのスケーリングとインターリーブされたビデオ フレームのキャプチャに関して特定の問題を提示する。ハードウェア ビデオ キャプチャ デバイスのフィルタまたは WDM ドライバの開発に関する詳細については、「IVPConfig」および「IVPNotify」を参照すること。
オーバーレイ ミキサーは、1394 または USB キャプチャ シナリオでは使用されない。オーバーレイ ミキサーは、PCI バス上でのビデオ キャプチャに使用される。
オーバーレイ ミキサーに接続された Microsoft® DirectShow® ビデオ レンダラ フィルタは、実際はビデオをまったくレンダリングしない。その接続は、IMemInputPin 接続ではなく、IOverlay 接続である。これにより、オーバーレイ ミキサーが実際のレンダリングを行えるようになり、ビデオ レンダラの役割はウィンドウの作成とデスクトップ上でのウィンドウのサイズと位置の制御だけになる。このウィンドウは、最上位のウィンドウまたはアプリケーション内の子ウィンドウを意味する。オーバーレイ ミキサーとビデオ レンダラは、ビデオ レンダラ側の IOverlay とオーバーレイ ミキサー側の IOverlayNotify を使用して、グラフ処理中に連続的に対話を行う。ウィンドウ サイズおよび位置情報に加え、ビデオ レンダラは、矩形クリッピングを管理する DirectDraw にウィンドウ ハンドルをオーバーレイ ミキサー経由で渡す。アプリケーションは、IVideoWindow インターフェイスおよび IBasicVideo2 インターフェイスを介してビデオ レンダラを制御することができる。
オーバーレイ ミキサーの DirectDraw 排他モードは、ゲームで画面の一部にビデオを表示できるようにする。このモードでは、オーバーレイ ミキサーは、ビデオ レンダラによって提供されたウィンドウ内ではなく、ゲーム アプリケーションによって作成された DirectDraw サーフェスにビデオを直接レンダリングする。これにより、ゲームはカラー キーを制御できる。オーバーレイ ミキサーを DirectDraw 排他モードで使用するには、オーバーレイ ミキサーのインスタンスを作成し、フィルタ グラフを作成する前にその IDDrawExclModeVideo インターフェイスを取得し、DirectDraw サーフェスをオーバーレイ ミキサーに追加する。オーバーレイ ミキサーにより、レンダリングが DirectDraw サーフェスで行われる。このモードに関する 1 つの重要な制限として、ゲームが実際のビデオ ビットにアクセスできないということがある。IDDrawExclModeVideo を使用した場合、アプリケーションはプライマリ サーフェスを作成し、オーバーレイ ミキサーはオーバーレイ サーフェスを作成する。
また、DirectDraw 排他モードを使用して (たとえば Web ページ内で) ウィンドウレス レンダリングを行うこともできるが、このような処理は推奨されない。その理由は、オーバーレイ ミキサーがこのモードでミキシングを行わないからである。これは、Line 21 またはサブピクチャ データを表示できないことを意味する。ウィンドウレス モードで DVD 再生アプリケーションを書く場合は、MSWebDVD ActiveX® コントロールを使用するアプローチが推奨される。
フィルタ インターフェイス | IAMOverlayFX、 IAMVideoDecimationProperties、 IBaseFilter、 IDDrawExclModeVideo、 IKsPropertySet、 IMediaPosition、 IMediaSeeking、 IQualProp |
---|---|
入力ピン メディア タイプ | メジャー タイプ : MEDIATYPE_Video サブタイプ :
|
入力ピン インターフェイス | IAMVideoAccelerator、 IKsPropertySet、 IMemInputPin、 IMixerPinConfig、 IMixerPinConfig2、 IOverlay (ピン 0 のみ)、 IPin、 IPinConnection、 IQualityControl、 IVPNotify、 IVPNotify2 |
出力ピン メディア タイプ | MEDIATYPE_Video、MEDIASUBTYPE_Overlay |
出力ピン インターフェイス | IPin、 IQualityControl |
フィルタ CLSID | CLSID_OverlayMixer |
プロパティ ページ CLSID | プロパティ ページなし。 |
実行モジュール | qdvd.dll |
メリット | MERIT_DO_NOT_USE |
カテゴリ | CLSID_LegacyAmFilterCategory |