ビデオ サンプル

ビデオ サンプル オブジェクトは、拡張ビデオ レンダラー (EVR) で使用するための IMFSample インターフェイスの特殊な実装です。 このオブジェクトのインスタンスを作成するには、 MFCreateVideoSampleFromSurface 関数を呼び出します。 関数は Direct3D サーフェスへのポインターを受け取り、 IMFSample インターフェイスへのポインターを返します。 次の種類のオブジェクトは、この関数を使用してサンプルを割り当てる必要があります。

ビデオ サンプル オブジェクトは、次のインターフェイスを実装します。

MFCreateVideoSampleFromSurfacepUnkSurface パラメーターが NULL 以外の場合、結果のビデオ サンプルには、Direct3D サーフェスをカプセル化する 1 つのメディア バッファーが含まれます。 このバッファー オブジェクトには、次の機能が制限されています。

  • バッファーの IMFMediaBuffer::Lock メソッドは、E_NOTIMPLを返します。

  • バッファーは IMF2DBuffer インターフェイスを実装しません。

バッファーからサーフェスにアクセスする唯一の方法は、サービス識別子MR_BUFFER_SERVICEを使用して IMFGetService::GetService を呼び出す方法です。

pUnkSurface パラメーターが NULL の場合、ビデオ サンプルは 0 個のメディア バッファーで作成されます。 サンプルにバッファーを追加するには、次の操作を行います。

  1. Direct3D サーフェスを作成します。

  2. MFCreateDXSurfaceBuffer を呼び出してサーフェス バッファーを作成します。 詳細については、「 DirectX Surface Buffer」を参照してください。

  3. IMFSample::AddBuffer を呼び出して、バッファーをサンプルに追加します。

この方法は、 IMF2DBuffer インターフェイスを介してサーフェス メモリにアクセスできるようにする必要がある場合に使用します。

メディア バッファー

メディア サンプル