拡張ビデオ レンダラー
拡張ビデオ レンダラー (EVR) は、ユーザーのモニターにビデオを表示するコンポーネントです。 EVR の 2 つのバージョンが存在します。
- Media Foundation アプリケーション用の EVR メディア シンク。
- DirectShow アプリケーションの EVR フィルター。
どちらのバージョンも同じ内部オブジェクトを使用してビデオをレンダリングし、同じインターフェイスの多くを共有します。
EVR は最大 16 個のビデオ ストリームをミックスできます。 最初の入力ストリームは 、参照ストリームと呼ばれます。 参照ストリームは常に z オーダーで最初に表示されます。 追加のストリームは サブストリームと呼ばれ、参照ストリームの上に混在します。 アプリケーションはサブストリームの z オーダーを変更できますが、z オーダーの先頭にサブストリームを指定することはできません。
サポートされるビデオ形式はグラフィックス ドライバーによって決まりますが、通常は次に制限されます。
- 参照ストリーム: ピクセルごとのアルファを持たないプログレッシブまたはインターレース YUV (NV12 や YUY2 など)。またはプログレッシブ RGB。
- サブストリーム: AYUV や AI44 など、ピクセルごとのアルファを持つプログレッシブ YUV。
使用可能なサブストリーム形式は、参照ストリームの形式によって異なります。 詳細については、「 EVR メディア タイプ ネゴシエーション」を参照してください。
内部的には、EVR は ミキサー と呼ばれるオブジェクトを使用して、レンダリングのために入力ストリームから 1 つのサーフェスにフレームを合成します。 ミキサーは、インターレース解除と色補正も行います。 ミキサーからの出力は、最終的な合成ビデオ フレームです。 発表者と呼ばれる 2 つ目のオブジェクトは、ビデオ フレームをディスプレイにレンダリングします。 発表者は、フレームがレンダリングされるタイミングをスケジュールし、Direct3D デバイスを管理します。 アプリケーションは、ミキサーまたは発表者のカスタム実装を提供できます。
出力フレーム レートは、参照ストリームにロックされます。 サブストリームが新しいフレームを受信するたびに、ミキサーはそれらを保持します。 参照ストリームが新しいフレームを受信すると、ミキサーはそのフレームをサブストリーム フレームと合成します。 (参照ストリームがインターレースされている場合、完全な参照フレームには複数のメディア サンプルが必要な場合があります)。ミキサーが参照フレームを待機している間に、サブストリームが複数のフレームを受信する可能性があります。 その場合、ミキサーは単に前のサブストリーム フレームを破棄します。
発表者は Direct3D デバイスを作成するため、DirectX ビデオ アクセラレーション (DXVA) サービスにアクセスする必要がある他のパイプライン オブジェクトとデバイスを共有する役割も担います。 特に、EVR ミキサーは DXVA ビデオ処理サービスを使用して、ビデオのインターレースとミックスを解除します。 ソフトウェア デコーダーは、EVR の外部で、高速ビデオ デコードに DXVA を使用できます。 発表者は、Direct3D デバイス マネージャーを使用して Direct3D デバイスを共有します。 次の図は、EVR の内部アーキテクチャを示しています。 (ソフトウェア デコーダーは灰色で網掛けされ、EVR の一部ではありません)。
EVR インターフェイス
EVR では、次のインターフェイスがサポートされています。 これらのインターフェイスの一部は、ミキサーまたは発表者によって実装されます。 各インターフェイスについて、リファレンス トピックでは、インターフェイスへのポインターを取得する方法について説明します。
インターフェイス | 説明 |
---|---|
IEVRFilterConfig | EVR フィルタの入力ピンの数を設定します (DirectShowのみ)。 |
IEVRFilterConfigEx | EVR フィルターを構成します (DirectShowのみ)。 |
IEVRTrustedVideoPlugin | 保護されたビデオをレンダリングする EVR プラグインを有効にします。 |
IMFDesiredSample | EVR 発表者がミキサーから特定のフレームを要求できるようにします。 |
IMFQualityAdvise | 品質マネージャーが EVR ビデオ品質を調整できるようにします。 |
IMFTopologyServiceLookup | カスタム ミキサーまたは発表者が EVR からインターフェイス ポインターを取得できるようにします。 |
IMFVideoDeviceID | EVR ミキサーまたは発表者のデバイス識別子を返します。 |
IMFVideoDisplayControl | EVR によるビデオの表示方法を制御します。 |
IMFVideoMixerBitmap | 静的ビットマップイメージをビデオとアルファブレンドします。 |
IMFVideoMixerControl | 拡張ビデオ レンダラー (EVR) がビデオ サブストリームを混在させる方法を制御します。 |
IMFVideoMixerControl2 | ビデオのインターレース解除の設定を制御します。 |
IMFVideoPositionMapper | 入力ビデオ ストリーム上の位置を、出力ビデオ ストリーム上の対応する位置にマップします。 |
IMFVideoPresenter | EVR 発表者によって公開されます。 |
IMFVideoProcessor | 調整、ノイズ フィルター、詳細フィルターなど、ビデオ処理を制御します。 |
IMFVideoRenderer | EVR のミキサーまたは発表者を設定します。 |
IMFVideoSampleAllocator | ビデオ サンプルを割り当てます。 |
このセクションの内容
トピック | 説明 |
---|---|
DirectShow EVR フィルターの使用 | DirectShow アプリケーションで EVR を使用する方法。 |
EVR メディア シンクの使用 | Media Foundation アプリケーションで EVR を使用する方法。 |
ビデオディスプレイコントロールの使用 | EVR がアプリケーション ウィンドウ内でビデオを表示する方法を制御する方法。 |
ビデオ Mixer コントロールの使用 | EVRミキサーの動作方法を制御する方法。 |
EVR メディアの種類のネゴシエーション | EVR が入力として受け入れ可能なビデオ形式を決定する方法について説明します。 |
カスタム ミキサー | EVR 用のカスタム ミキサーを作成する方法。 |
EVR 発表者を作成する方法 | EVR のカスタム 発表者を作成する方法。 |
関連トピック