Microsoft DirectX 8.0 |
IDDrawExclModeVideo インターフェイスはオーバーレイ ミキサー フィルタによって実装される。このインターフェイスを利用すると、Microsoft® DirectDraw® 排他フルスクリーン モードになっている間でもビデオを再生できる。ゲーム アプリケーションは、DirectDraw を排他フルスクリーン モードで使用しながらビデオ再生を継続することができる。たとえば、バックグラウンドでビデオを再生しながら、その上にグラフィックをのせることができる。アプリケーションは、DirectDraw オブジェクトとプライマリ サーフェスを渡し、それらがフィルタ グラフのオーバーレイ ミキサー フィルタに渡される。
DVD グラフ ビルダ オブジェクトは、DirectDraw 排他フルスクリーン モードになっている間、IDDrawExclModeVideo を使って DVD コンテンツを再生する。このインターフェイスを単独で使って、ゲーム内で MPEG-1 ビデオまたは AVI ビデオを再生することもできる。
vtable 順のメソッド
IUnknown メソッド 説明 QueryInterface サポートされているインターフェイスへのポインタを取得する。 AddRef 参照カウントをインクリメントする。 Release 参照カウントをデクリメントする。 IDDrawExclModeVideo メソッド 説明 SetDDrawObject これ以降の描画に使われる DirectDraw オブジェクトを設定する。 GetDDrawObject オーバーレイ ミキサーが使用している DirectDraw オブジェクトを取得する。 SetDrawParameters 元のビデオのどの部分を画面のどこに表示するかを指定する。 SetDDrawSurface これ以降の描画に使われる DirectDraw サーフェスを設定する。 GetDDrawSurface オーバーレイ ミキサーが使用している DirectDraw サーフェスを取得する。 GetNativeVideoProps オーバーレイ ミキサーのプライマリ ストリームの幅、高さ、およびアスペクト比を取得する。 SetCallbackInterface オーバーレイ ミキサーへのコールバック インターフェイスを指定し、呼び出し側アプリケーションがビデオの再生中に表示の調整に関する通知を受け取れるようにする。
オーバーレイ ミキサー フィルタが使用している DirectDraw オブジェクトを取得する。
構文
HRESULT GetDDrawObject( LPDIRECTDRAW *pDDrawObject, LPBOOL *pbUsingExternal );
パラメータ
- pDDrawObject
- [out] オーバーレイ ミキサーが使用している IDirectDraw インターフェイスへのポインタのアドレス。
- pbUsingExternal
- [out] オーバーレイ ミキサーが SetDDrawObject で指定されている DirectDraw オブジェクトを使用しているかどうかを示す値へのポインタのアドレス。オーバーレイ ミキサーが SetDDrawObject で指定されている DirectDraw オブジェクトを使用している場合は TRUE、それ以外の場合は FALSE になる。
戻り値
インターフェイスの実装に応じた HRESULT 値を返す。
現在実装されている Microsoft® DirectShow® は、次の値を返す。
S_OK 成功。 E_INVALIDARG 引数が無効。 DirectDraw エラー コード 指定されたサーフェスをオーバーレイ ミキサー上で設定しようとしたときに DirectDraw エラーが発生した。
注意
フィルタ グラフが DirectDraw オブジェクトを設定しておらず、オーバーレイ ミキサーがまだ DirectDraw オブジェクトを割り当てていない場合は、pDDrawObject が NULL に設定され、pbUsingExternal が FALSE に設定される。
オーバーレイ ミキサーが使用している DirectDraw サーフェスを取得する。
構文
HRESULT GetDDrawSurface( LPDIRECTDRAWSURFACE *pDDrawSurface, LPBOOL *pdUsingExternal );
パラメータ
- pDDrawSurface
- [out] オーバーレイ ミキサーが使用している IDirectDrawSurface インターフェイスへのポインタのアドレス。
- pdUsingExternal
- [out] オーバーレイ ミキサーが SetDDrawSurface で指定されている DirectDraw サーフェスを使用しているかどうかを示すブール型の値へのポインタのアドレス。オーバーレイ ミキサーが SetDDrawSurface で指定されている DirectDraw サーフェスを使用している場合は TRUE、それ以外の場合は FALSE になる。
戻り値
インターフェイスの実装に応じた HRESULT 値を返す。
現在の DirectShow の実装での戻り値は次のとおりである。
S_OK 成功。 E_INVALIDARG 引数が無効。 DirectDraw エラー コード 指定されたサーフェスをオーバーレイ ミキサー上で設定しようとしたときに DirectDraw エラーが発生した。
注意
フィルタ グラフが DirectDraw サーフェスを設定しておらず、オーバーレイ ミキサーがまだ DirectDraw サーフェスを割り当てていない場合は、pDDrawSurface が NULL に設定され、pbUsingExternal が FALSE に設定される。
オーバーレイ ミキサーのプライマリ ストリームの現在のビデオのサイズとアスペクト比を取得する。
構文
HRESULT GetNativeVideoProps( LPDWORD *pdwVideoWidth, LPDWORD *pdwVideoHeight, LPDWORD *pdwPictAspectRatioX, LPDWORD *pdwPictAspectRatioY );
パラメータ
- pdwVideoWidth
- [out] ビデオの幅へのポインタのアドレス。
- pdwVideoHeight
- [out] ビデオの高さへのポインタのアドレス。
- pdwPictAspectRatioX
- [out] アスペクト比の x 軸へのポインタのアドレス。
- pdwPictAspectRatioY
- [out] アスペクト比の y 軸へのポインタのアドレス。
戻り値
インターフェイスの実装に応じた HRESULT 値を返す。
現在の DirectShow の実装での戻り値は次のとおりである。
S_OK 成功。 E_INVALIDARG 引数が無効。
注意
フィルタ グラフは、EC_VIDEO_SIZE_CHANGED イベントを予期し、イベントを受け取ったら、このメソッドを呼び出してアスペクト比と位置を調整する必要がある。
オーバーレイ ミキサーのコールバック インターフェイスへのポインタを取得し、呼び出し側アプリケーションがビデオを再生中に表示の調整に関する通知を受け取れるようにする。
構文
HRESULT SetCallbackInterface( IDDrawExclModeVideoCallback *pCallback DWORD dwFlag );
パラメータ
- pCallback
- [out] IDDrawExclModeVideoCallback インターフェイスを実装するオブジェクトへのポインタ。pCallback が NULL の場合は、コールバック インターフェイスが NULL に設定され、それ以降のコールバックは行われない。前のコールバック インターフェイスがあった場合は、そのインターフェイスが解放され、それ以降のそのインターフェイスへのコールバックは行われない。pCallback が NULL 以外の値で、このメソッドが S_OK を返す場合は、pCallback が指すオブジェクトの参照カウントがインクリメントされる。
- dwFlag
- [in] 0 でなければならない。
戻り値
インターフェイスの実装に応じた HRESULT 値を返す。
現在の DirectShow の実装での戻り値は次のとおりである。
S_OK 成功。 E_INVALIDARG 引数が無効。
注意
アプリケーションは、このメソッドを使ってオーバーレイのサイズ、位置、カラー キーの変更が発生したときに通知を受け取り、それに合わせてビデオを非表示にしたり、表示したり、再生の開始時、終了時、または再生中にビデオを調整したりする必要がある。アプリケーションは、このメソッドを呼び出すことにより、IDDrawExclModeVideoCallback インターフェイスにアクセスし、そのインターフェイスへのポインタをオーバーレイ ミキサーに渡すことができる。
これ以降の描画に使われる DirectDraw オブジェクトを設定する。
構文
HRESULT SetDDrawObject( LPDIRECTDRAW *pDDrawObject );
パラメータ
- pDDrawObject
- [in] 使用するオブジェクトの IDirectDraw インターフェイスへのポインタのアドレス。
戻り値
インターフェイスの実装に応じた HRESULT 値を返す。
現在の DirectShow の実装での戻り値は次のとおりである。
S_OK 成功。 E_INVALIDARG 引数が無効。 DirectDraw エラー コード 指定されたサーフェスをオーバーレイ ミキサー上で設定しようとしたときに DirectDraw エラーが発生した。
注意
ゲーム アプリケーションは、このメソッドを使って、自アプリケーション用に作成した DirectDraw オブジェクトをオーバーレイ ミキサー フィルタに共有させ、SetDDrawSurface で設定されている、指定されたサーフェスでビデオを描画することができる。
元のビデオのどの部分を画面のどこに表示するかを指定する。
構文
HRESULT SetDrawParameters( RECT *pSrcRect, RECT *pDestRect );
パラメータ
- pSrcRect
- [in] 元のビデオの RECT 構造体へのポインタ。
- pDestRect
- [in] ビデオが画面のどこに表示されるかを示す RECT へのポインタ。
戻り値
インターフェイスの実装に応じた HRESULT 値を返す。
参照
これ以降の描画に使われる DirectDraw サーフェスを指定する。
構文
HRESULT SetDDrawSurface( LPDIRECTDRAWSURFACE *pDDrawSurface );
パラメータ
- pDDrawSurface
- [in] 使用するサーフェスの IDirectDrawSurface インターフェイスへのポインタのアドレス。
戻り値
インターフェイスの実装に応じた HRESULT 値を返す。
現在の DirectShow の実装での戻り値は次のとおりである。
S_OK 成功。 E_INVALIDARG 引数が無効。 DirectDraw エラー コード 指定されたサーフェスをオーバーレイ ミキサー上で設定しようとしたときに DirectDraw エラーが発生した。
注意
ゲーム アプリケーションは、このメソッドを使って、自アプリケーション用に作成した DirectDraw サーフェスをオーバーレイ ミキサー フィルタに共有させ、指定されたサーフェスでビデオを描画することができる。このサーフェスは、SetDDrawObject で指定されたオブジェクトと関連付けられていなければならない。