ビデオ サンプル
ビデオ サンプル オブジェクトは、拡張ビデオ レンダラー (EVR) で使用するための IMFSample インターフェイスの特殊な実装です。 このオブジェクトのインスタンスを作成するには、 MFCreateVideoSampleFromSurface 関数を呼び出します。 関数は Direct3D サーフェスへのポインターを受け取り、 IMFSample インターフェイスへのポインターを返します。 次の種類のオブジェクトは、この関数を使用してサンプルを割り当てる必要があります。
カスタム EVR 発表者。 発表者はビデオ サンプルを割り当て、ミキサーの IMFTransform::P rocessOutput メソッドに送信します。 詳細については、「 EVR 発表者を記述する方法」を参照してください。
ビデオ アクセラレーションをサポートするビデオ デコーダー。 詳細については、「 Media Foundation での DXVA 2.0 のサポート」を参照してください。
ビデオ サンプル オブジェクトは、次のインターフェイスを実装します。
MFCreateVideoSampleFromSurface の pUnkSurface パラメーターが NULL 以外の場合、結果のビデオ サンプルには、Direct3D サーフェスをカプセル化する 1 つのメディア バッファーが含まれます。 このバッファー オブジェクトには、次の機能が制限されています。
バッファーの IMFMediaBuffer::Lock メソッドは、E_NOTIMPLを返します。
バッファーは IMF2DBuffer インターフェイスを実装しません。
バッファーからサーフェスにアクセスする唯一の方法は、サービス識別子MR_BUFFER_SERVICEを使用して IMFGetService::GetService を呼び出す方法です。
pUnkSurface パラメーターが NULL の場合、ビデオ サンプルは 0 個のメディア バッファーで作成されます。 サンプルにバッファーを追加するには、次の操作を行います。
Direct3D サーフェスを作成します。
MFCreateDXSurfaceBuffer を呼び出してサーフェス バッファーを作成します。 詳細については、「 DirectX Surface Buffer」を参照してください。
IMFSample::AddBuffer を呼び出して、バッファーをサンプルに追加します。
この方法は、 IMF2DBuffer インターフェイスを介してサーフェス メモリにアクセスできるようにする必要がある場合に使用します。
関連トピック