強化されたビデオレンダラー

Enhanced video renderer (EVR) は、ユーザーのモニターにビデオを表示するコンポーネントです。 EVR の2つのバージョンが存在します。

  • メディアファンデーションアプリケーション用の EVR メディアシンク。
  • EVR フィルター (DirectShow アプリケーション用)。

両方のバージョンで同じ内部オブジェクトを使用してビデオをレンダリングし、同じインターフェイスの多くを共有します。

EVR では、最大16のビデオストリームを混在させることができます。 最初の入力ストリームを 参照ストリーム と呼びます。 参照ストリームは常に z オーダーの先頭に表示されます。 追加のストリームは サブストリーム と呼ばれ、参照ストリームの上に混在します。 アプリケーションでは、サブストリームの z オーダーを変更できますが、最初に重ね順にサブストリームを配置することはできません。

グラフィックスドライバーは、サポートされているビデオ形式を決定しますが、通常は次のように制限されています。

  • 参照ストリーム: ピクセル単位のアルファを使用しないプログレッシブまたはインターレースの YUV (NV12 や YUY2 など)。またはプログレッシブ RGB。
  • サブストリーム: AYUV や AI44 など、ピクセルごとのアルファを使用したプログレッシブ YUV。

使用できるサブストリーム形式は、参照ストリームの形式によって異なる場合があります。 詳細については、「 Evr メディアの種類のネゴシエーション」を参照してください。

内部的には、EVR は ミキサー と呼ばれるオブジェクトを使用して、入力ストリームのフレームをレンダリングのために1つのサーフェイスに合成します。 ミキサーは、インターレース解除や色の修正も実行します。 ミキサーからの出力は、最後の複合ビデオフレームです。 プレゼンター と呼ばれる2番目のオブジェクトは、ビデオフレームを表示にレンダリングします。 プレゼンターは、フレームがレンダリングされ、Direct3D デバイスが管理されるタイミングをスケジュールします。 アプリケーションでは、ミキサーまたはプレゼンターのいずれかのカスタム実装を提供できます。

出力フレームレートは参照ストリームにロックされています。 サブストリームは、新しいフレームを受信するたびに、そのフレームに保持されます。 参照ストリームが新しいフレームを受け取ると、ミキサーはそのフレームをサブストリームフレームで合成します。 (参照ストリームがインターレースされている場合は、完全な参照フレームに複数のメディアサンプルが必要になることがあります)。サブストリームが参照フレームを待機している間に複数のフレームを受け取る可能性があります。 その場合、ミキサーは単に前のサブストリームフレームを破棄します。

プレゼンターは Direct3D デバイスを作成するため、DirectX Video アクセラレーション (DXVA) サービスにアクセスする必要がある他のパイプラインオブジェクトとデバイスを共有することにもなります。 特に、EVR ミキサーは、DXVA ビデオ処理サービスを使用してビデオをインターレース解除し、ミックスします。 EVR の外部では、ソフトウェアデコーダーはビデオの高速デコードに DXVA を使用する場合があります。 このプレゼンターは、direct3d Device Managerを使って direct3d デバイスを共有します。 次の図は、EVR の内部アーキテクチャを示しています。 (グレーで網掛けされたソフトウェアデコーダーは、EVR の一部ではありません)。

evr を示すアーキテクチャ図。

EVR インターフェイス

EVR では、次のインターフェイスがサポートされています。 これらのインターフェイスの一部は、ミキサーまたはプレゼンターによって実装されます。 各インターフェイスのリファレンストピックでは、インターフェイスへのポインターを取得する方法について説明します。

インターフェイス 説明
IEVRFilterConfig EVR フィルターの入力ピンの数を設定します (DirectShow のみ)。
IEVRFilterConfigEx EVR フィルターを構成します (DirectShow のみ)。
IEVRTrustedVideoPlugin EVR プラグインで保護されたビデオをレンダリングできるようにします。
IMFDesiredSample EVR プレゼンターがミキサーから特定のフレームを要求できるようにします。
IMFQualityAdvise 品質マネージャーが EVR ビデオ品質を調整できるようにします。
IMFTopologyServiceLookup カスタムミキサーまたはプレゼンターが EVR からインターフェイスポインターを取得できるようにします。
IMFVideoDeviceID EVR ミキサーまたはプレゼンターのデバイス id を返します。
IMFVideoDisplayControl EVR がビデオを表示する方法を制御します。
IMFVideoMixerBitmap Alpha-静的なビットマップイメージとビデオをブレンドします。
IMFVideoMixerControl 拡張ビデオレンダラー (EVR) がビデオサブストリームをミックスする方法を制御します。
IMFVideoMixerControl2 ビデオのノンインターレース化の設定を制御します。
IMFVideoPositionMapper 入力ビデオストリームの位置を、出力ビデオストリーム上の対応する位置にマップします。
IMFVideoPresenter EVR プレゼンターによって公開されます。
IMFVideoProcessor 調整、ノイズフィルター、詳細フィルターなどのビデオ処理を制御します。
IMFVideoRenderer EVR でミキサーまたはプレゼンターを設定します。
IMFVideoSampleAllocator ビデオのサンプルを割り当てます。

このセクションの内容

トピック 説明
DirectShow EVR フィルターの使用 DirectShow アプリケーションでの EVR の使用方法。
EVR メディアシンクの使用 メディアファンデーションアプリケーションでの EVR の使用方法。
ビデオディスプレイコントロールの使用 アプリケーションウィンドウ内で EVR がビデオを表示する方法を制御する方法について説明します。
ビデオミキサーコントロールの使用 EVR ミキサーの動作方法を制御する方法。
EVR メディアの種類のネゴシエーション 入力として受け入れることができるビデオ形式を EVR が決定する方法について説明します。
カスタムミキサー EVR のカスタムミキサーを記述する方法。
方法: EVR プレゼンターを作成する EVR のカスタムプレゼンターを記述する方法。

オーディオ/ビデオの再生