Boost」など、さまざまなカンファレンスを企画・運営しています。BOOKS(コードジン・ブックス)は、CodeZineの連載からカットアップした、開発現場の課題解決に役立つ書籍シリーズです。標準プレゼンタのカスタマイズEVRをアプリケーションで作成したウィンドウに表示するようにします。そのために、EVRの標準プレゼンタのインターフェイスを取得し、ウィンドウハンドルを設定します。EVRからIMFGetServiceインターフェイスを取得します。IMFGetService::GetServiceを使って標準プレゼンタのIMFVideoDisplayControlインターフェイスを取得します。IMFVideoDisplayControl::SetVideoWindowでウィンドウハンドルを指定します。次に、IMFVideoDisplayControl::SetVideoPositionを使って転送元矩形と転送先矩形を指定します。転送元矩形はMFVideoNormalizedRect構造体で指定するのですが、ピクセル単位ではなく、左上が(0,0)、右下が(1,1)となることに注意して下さい。動画をウィンドウに表示できるようになったので、続いてウォーターマークを作成し、適用しましょう。ウォーターマークはGDIのビットマップまたはDirect3D9サーフェイスを用意しておき、それをビデオフレームに合成することによって実現します。WaterMark」という文字列を描画したウォーターマークをEVRに割り当てます。IMFGetService::GetServiceを使ってIMFVideoMixerBitmapインターフェイスを取得します。(void**)&m_MixerBitmap);次に、用意したビットマップをEVRに割り当てます。そのためにMFVideoAlphaBitmap構造体でどのように合成するか指定し、IMFVideoMixerBitmap::SetAlphaBitmapを呼び出します。MFVideoAlphaBitmapはMFVideoAlphaBitmapParamを包含しています(表1、表2)。TRUEであればhdcメンバが有効。FALSEであればpDDsメンバが有効。ウォーターマークとしてGDIビットマップを使うかDirect3D9サーフェイスを使うか。ウォーターマークとなるGDIビットマップのデバイスコンテキスト。ウォーターマークとなるDirect3D9サーフェイス。MFVideoAlphaBitmapParams構造体。MFVideoAlphaBitmapFlagsの組み合わせで、どの構造体メンバが有効かを示す。