次の方法で共有


Direct3D レンダリング ターゲットの操作

VMR-7 および VMR-9 と共に使う新しいメディア サブタイプが定義されている。アップストリーム フィルタがこれらのサブタイプの 1 つとの接続を提示するとき、Direct3D レンダリング ターゲットでレンダリングを実行するよう VMR に示す。VMR-7 の場合は、DirectX 7 Direct3D レンダリング ターゲットである。VMR-9 の場合は、DirectX 9 Direct3D レンダリング ターゲットである。VMR がミキシング モードである場合は、サーフェイスも Direct3D テクスチャ サーフェイスになる。VMR がミキシング モードではない場合、サーフェイスは通常の Direct3D サーフェイスになる。VMR がミキシング モードである場合にのみ、ARGB ピクセル フォーマットはサポートされる。新しいサブタイプを次に示す。

VMR-7 VMR-9
MEDIASUBTYPE_RGB32_D3D_DX7_RT MEDIASUBTYPE_RGB32_D3D_DX9_RT
MEDIASUBTYPE_RGB16_D3D_DX7_RT MEDIASUBTYPE_RGB16_D3D_DX9_RT
MEDIASUBTYPE_ARGB32_D3D_DX7_RT MEDIASUBTYPE_ARGB32_D3D_DX9_RT
MEDIASUBTYPE_ARGB4444_D3D_DX7_RT MEDIASUBTYPE_ARGB4444_D3D_DX9_RT
MEDIASUBTYPE_ARGB1555_D3D_DX7_RT MEDIASUBTYPE_ARGB1555_D3D_DX9_RT

これらの新しいタイプは、他の DirectShow メディア サブタイプと共に uuids.h に定義されている。MEDIASUBTYPE_RGB32 メディア タイプは RGBx888 フォーマットであり、MEDIASUBTYPE_RGB16 メディア タイプは RGB565 フォーマットである。これらのピクセル フォーマットの詳細については、DirectX Graphics のドキュメントを参照すること。

サーフェイスのロック解除の要求

DirectDraw サーフェイスのロックとロック解除はマシンへの負荷が大きい処理である。Direct3D レンダリング ターゲット メディア サブタイプを使うとき、アップストリーム フィルタがグラフィック ハードウェアを使ってサーフェイスを操作できるようにするため、サーフェイスのロックを解除しておく必要がある。不必要なロック/ロック解除操作を避けるため、VMR は IMemAllocator::GetBuffer メソッドの新しいフラグ AM_GBF_NODDRAWSURFACELOCK をサポートしている。このフラグを設定すると、VMR はサンプルをアップストリーム フィルタに渡す前に、DirectDraw サーフェイスをロックしない。このフラグが使われているときにロックされているポインタはないため、IMediaSample::GetPointer の呼び出しは失敗する。DirectDraw サーフェイスにアクセスするには、フィルタは返された IMediaSample オブジェクトの QueryInterface を呼び出し、IVMRSurface インターフェイスを要求する必要がある。当然だが、アップストリーム フィルタでは、サンプルを解放し、フリー リストに戻すときにサーフェイスがロックされていないようにすること。