Microsoft DirectX 8.0 |
IFullScreenVideo インターフェイスは、フルスクリーン レンダリング フィルタに実装される。旧式のグラフィックス カードは、320 x 240 のビデオを 1024 x 768 に伸張する際に時間がかかる。システムにこのようなグラフィックス カードが搭載されている場合、フィルタ グラフ マネージャは、フルスクリーン レンダラを使用してフルスクリーン ビデオをレンダリングする。ハードウェアが持つこの制約を解消するため、フルスクリーン レンダラでは、グラフィックス ディスプレイ カードを単純に 320 x 240 モードに切り替える。比較的新しいビデオ カードの場合には、表示を高速で伸張できるので、ウィンドウ モードでもフルスクリーン モードでもビデオ レンダリング フィルタを使用できる。表示は、アプリケーションが IVideoWindow::put_FullScreenMode を呼び出すとフルスクリーン モードに切り替わり、ユーザーが Esc キーを押すと通常のウィンドウ再生に戻る。
接続されると、フルスクリーン レンダラは利用可能なディスプレイ モードをロードする。利用可能なモードの数は IFullScreenVideo::CountModes で取得できる。個々のモードに関する情報は、その後 IFullScreenVideo::GetModeInfo および IFullScreenVideo::IsModeAvailable を呼び出して取得する。アプリケーションから任意のディスプレイ モードを有効および無効にするには、IFullScreenVideo::SetEnabled メソッドを呼び出す。現在の値は IFullScreenVideo::IsModeEnabled を呼び出して照会する。アプリケーションから任意のディスプレイ モードを有効または無効にするには、(C/C++ の TRUE 値や FALSE 値ではなく) OATRUE または OAFALSE を指定して IFullScreenVideo::SetEnabled を呼び出す。
フルスクリーン レンダラは、フォアグラウンドのアクティブ ウィンドウでのみ機能する。フルスクリーン モード中に、ユーザーがほかのアプリケーションに切り替えようとすると、ビデオは非表示になる。フルスクリーン レンダラは、実際にビデオを描画しているウィンドウを最小化することにより、これを実現する (ただしウィンドウの使用はユーザーにはわからない)。ウィンドウを最大化すると、ビデオが復元される。
vtable 順のメソッド
IUnknown メソッド 説明 QueryInterface サポートされているインターフェイスへのポインタを取得する。 AddRef 参照カウントをインクリメントする。 Release 参照カウントをデクリメントする。 IFullScreenVideo メソッド 説明 CountModes フルスクリーン レンダラ上の利用可能なモード数を取得する。 GetModeInfo 特定のモードに関する情報を取得する。 GetCurrentMode 現在有効なビデオ モードを取得する。 IsModeAvailable 特定のビデオ モードが利用可能かどうかを判断する。 IsModeEnabled 特定のビデオ モードが有効かどうかを判断する。 SetEnabled ビデオ モードを有効および無効にする。 GetClipFactor クリップ損失係数の現在の設定を取得する。 SetClipFactor 失われる最大のイメージ領域に基づいてビデオ モードを指定する。 SetMessageDrain レンダラ宛てのウィンドウ メッセージを受け取るウィンドウを指定する。 GetMessageDrain レンダラ宛てのウィンドウ メッセージを受け取るウィンドウを取得する。 SetMonitor 使用中のモニタを設定する (複数モニタの実装時に使用)。 GetMonitor 使用中のモニタを取得する。 HideOnDeactivate ウィンドウがアクティブでないときは表示しない。 IsHideOnDeactivate HideOnDeactivate プロパティの状態を取得する。 SetCaption フルスクリーン ウィンドウに関連付けるキャプションを設定する。 GetCaption フルスクリーン ウィンドウに関連付けられたキャプションを取得する。 SetDefault フルスクリーン ビデオ レンダラのプロパティすべてにデフォルト値を設定する。
フルスクリーン レンダラ上の利用可能なモード数を取得する。
構文
HRESULT CountModes( long *pModes );
パラメータ
- pModes
- [out] 返されたモード数へのポインタ。
戻り値
HRESULT 値を返す。
注意
DirectShow のフルスクリーン レンダラでは、8 つのモード (320 × 200 × 8/16 ビット、320 × 240 × 8/16、640 × 400 × 8/16、および 640 × 480 × 8/16) がサポートされる。解像度の高いモードより、低いモードを優先的に使用すること。アプリケーションから個々のモードを有効および無効にすると、利用可能なモードを正確に指定できる。選択したモードに関する大まかな設定には、クリップ損失係数を使用する。
フルスクリーン ウィンドウに関連付けられたキャプションを取得する。
構文
HRESULT GetCaption( BSTR *pstrCaption );
パラメータ
- pstrCaption
- [out] 取得されたキャプションへのポインタ。
戻り値
HRESULT 値を返す。
注意
Alt + Tab キーを押して別のウィンドウに切り替えると、DirectShow のフルスクリーン レンダラを非アクティブにできる。フルスクリーン レンダラは、非アクティブにするとアイコンとして表示される。タイトル文字列はこのメソッドで設定できる。アクティブでないときにレンダラが非表示になる場合、このメソッドは成功するが、ウィンドウがアイコンとして表示されないため、設定による効果はない。
クリップ損失係数の現在の設定を取得する。
構文
HRESULT GetClipFactor( long *pClipFactor );
パラメータ
- pClipFactor
- [out] 失われてもよいイメージの最大量へのポインタ。
戻り値
HRESULT 値を返す。
注意
クリップ損失係数の設定の詳細については、「IFullScreenVideo::SetClipFactor」を参照すること。
現在有効なビデオ モードを取得する。
構文
HRESULT GetCurrentMode( long *pMode );
パラメータ
- pMode
- [out] 取得されたフルスクリーン ビデオ モードへのポインタ。
戻り値
HRESULT 値を返す。
注意
接続されると、フルスクリーン ビデオ レンダラはビデオ再生に使用するディスプレイ モードを選択する。選択されたモードは、このメソッドで取得できる。そのうえで IFullScreenVideo::GetModeInfo を使用すると、そのモードの詳細を取得できる。
DirectShow のフルスクリーン ビデオ レンダラに利用可能なモードの一覧については、「IFullScreenVideo::SetEnabled」を参照すること。
レンダラ宛てのウィンドウ メッセージを受け取るウィンドウを取得する。
構文
HRESULT GetMessageDrain( HWND *hwnd );
パラメータ
- hwnd
- [out] メッセージ ドレーンとして指定されているウィンドウのウィンドウ ハンドルへのポインタ。
戻り値
HRESULT 値を返す。
注意
フルスクリーン ビデオ レンダラは、受け取ったマウス メッセージおよびキーボード メッセージを、すべてメッセージ ドレーンとして指定されているウィンドウに送る。このとき、メッセージのパラメータは変換しない。渡されるメッセージの一覧は、IVideoWindow::put_MessageDrain の場合と同じである。アプリケーションからこのメソッドを使用して、フルスクリーン ビデオ用のホットキー サポートを実装できる。たとえば、Ctrl キーと P キーの組み合わせを監視し、それを合図にビデオをポーズするような処理が考えられる。
特定のモードに関する情報を取得する。
構文
HRESULT GetModeInfo( long Mode, long *pWidth, long *pHeight, long *pDepth );
パラメータ
- Mode
- [in] 情報を取得するモード。
- pWidth
- [out] モードのイメージ表示の幅へのポインタ (ピクセル単位)。
- pHeight
- [out] モードのイメージ表示の高さへのポインタ (ピクセル単位)。
- pDepth
- [out] ピクセルあたりのカラー ビット数へのポインタ。
戻り値
HRESULT 値を返す。
注意
このメソッドは、そのレンダラに利用可能な所定のモードの高さ、幅、および色深度を返す。利用可能なディスプレイ モードの数は、IFullScreenVideo::CountModes で取得できる。
DirectShow のフルスクリーン ビデオ レンダラに利用可能なモードの一覧については、「IFullScreenVideo::SetEnabled」を参照すること。
使用中のモニタ タイプを取得する。
構文
HRESULT GetMonitor( long *Monitor );
パラメータ
- Monitor
- [out] 現在使用中のモニタへのポインタ。
戻り値
NOERROR を返す。
注意
DirectShow のフルスクリーン レンダラは、常に 0 (プライマリ モニタ) を返す。
フルスクリーン ウィンドウが非アクティブなとき、そのウィンドウ アイコンを非表示にする。
構文
HRESULT HideOnDeactivate( long Hide );
パラメータ
- Hide
- [in] フルスクリーン ウィンドウが非アクティブなとき、そのビデオ ウィンドウ アイコンを非表示にするかどうかを指定する値。非表示にするには OATRUE、表示するには OAFALSE を設定する。
戻り値
成功した場合は、NOERROR を返す。Hide が無効な場合は、E_INVALIDARG を返す。
注意
DirectShow のフルスクリーン レンダラ用のデフォルト設定は OATRUE になっている。
フルスクリーン レンダラは、フォアグラウンドのアクティブ ウィンドウでのみ機能する。フルスクリーン モード中に、ユーザーがほかのアプリケーションに切り替えようとすると、ビデオが非表示になる。レンダラは、実際にビデオを描画しているウィンドウを最小化することにより、これを実現する (ただしウィンドウの使用はユーザーにはわからない)。ウィンドウを最大化すると、ビデオが復元される。
IFullScreenVideo::HideOnDeactivate プロパティの状態を取得する。
構文
HRESULT IsHideOnDeactivate(void);
戻り値
HideOnDeactivate に OATRUE が設定されている場合は、S_OK を返す。OAFALSE が設定されている場合は、S_FALSE を返す。
特定のビデオ モードが利用可能かどうかを判断する。
構文
HRESULT IsModeAvailable( long Mode );
パラメータ
- Mode
- [in] 確認するフルスクリーン モード。
戻り値
そのビデオ モードが利用可能な場合は、S_OK を返す。それ以外の場合は、S_FALSE を返す。
注意
フルスクリーン レンダラでサポートされるディスプレイ モードは、ディスプレイ カード上の実際に利用可能なモードとは異なる。レンダラが接続されるまでは、この情報を利用するために必要なリソースの割り当てが済んでいない可能性があるため、アプリケーションではレンダラが接続されているときのみにこのメソッドを呼び出すこと。モードが利用可能であっても、必ずしもそのモードがビデオ再生に使用されるとは限らない。ビデオ再生に使用されるモードには、フィルタ グラフのフィルタとの互換性も必要になる。
特定のモードが有効かどうかを判断する。
構文
HRESULT IsModeEnabled( long Mode );
パラメータ
- Mode
- [in] 確認するフルスクリーン モード。
戻り値
そのビデオ モードが有効な場合は、S_OK を返す。それ以外の場合は、S_FALSE を返す。
注意
このメソッドを使用して、レンダラでサポートされている特定のディスプレイ モードを有効および無効にすることができる。モードが利用可能であっても、必ずしもそのモードがビデオ再生に使用されるとは限らない。ビデオ再生に使用されるモードには、フィルタ グラフのフィルタとの互換性も必要になる。
DirectShow のフルスクリーン ビデオ レンダラに利用可能なモードの一覧については、「IFullScreenVideo::SetEnabled」を参照すること。
参照
フルスクリーン ウィンドウに関連付けるタイトルを設定する。
構文
HRESULT SetCaption( BSTR strCaption );
パラメータ
- strCaption
- [in] キャプションが格納された文字列。
戻り値
HRESULT 値を返す。
失われる最大のイメージ領域に基づいてビデオ モードを指定する。
構文
HRESULT SetClipFactor( long ClipFactor );
パラメータ
- ClipFactor
- [in] 失われてもよいイメージの最大量。
戻り値
HRESULT 値を返す。
注意
クリップ損失係数は、フルスクリーン モードを有効にするための、アプリケーションから使いやすく汎用性が高い手段である。このメソッドは、使用するディスプレイ モードを決めるときに、失われてもよいビデオの量を定義する。たとえば、デコーダがビデオを圧縮できない場合に、MPEG ファイル (たとえば 352 × 288 ピクセル) を、ディスプレイ モード 320 × 200 で再生すると、イメージの約 25% が失われる。クリップ損失係数は、許容範囲の上限を指定する。典型的な QCIF サイズの MPEG ビデオ (352 × 288 ピクセル) を、ディスプレイ モード 320 × 200 で再生するため、デフォルト値は 25% になっている。
フルスクリーン ビデオ レンダラのデフォルト設定を設定する。
構文
HRESULT SetDefault(void);
戻り値
HRESULT 値を返す。
注意
このインターフェイスで設定するプロパティは、現在のレンダラ インスタンスにのみ適用される。ただし、このインターフェイス メソッドを呼び出して、そのプロパティを共通のデフォルト値にすることができる。
ビデオ モードを有効および無効にする。
構文
HRESULT SetEnabled( long Mode, long bEnabled );
パラメータ
- Mode
- [in] 有効または無効にするモード (下の一覧を参照)。
- bEnabled
- [out] 次のいずれかの値を設定する。
OATRUE モードを有効にする。 OAFALSE モードを無効にする。
戻り値
HRESULT 値を返す。
注意
利用可能な DirectShow のモードは以下のように定義される。ただし、モードの順序は変更されることがあるので、IFullScreenVideo::CountModes および IFullScreenVideo::GetModeInfo のインターフェイス メソッドを使用してモードを列挙すること。
モード 幅 高さ RGB 深度 (ビット単位) 0 320 200 16 1 320 200 8 2 320 240 16 3 320 240 8 4 640 400 16 5 640 400 8 6 640 480 16 7 640 480 8 8 800 600 16 9 800 600 8 10 1024 768 16 11 1024 768 8 12 1152 864 16 13 1152 864 8 14 1280 1024 16 15 1280 1024 8
レンダラ宛てのウィンドウ メッセージを受け取るウィンドウを指定する。
構文
HRESULT SetMessageDrain( HWND hwnd );
パラメータ
- hwnd
- [in] メッセージ ドレーン ウィンドウのウィンドウ ハンドル。
戻り値
HRESULT 値を返す。
注意
フルスクリーン ビデオ レンダラは、受け取ったマウス メッセージおよびキーボード メッセージを、すべてメッセージ ドレーンとして指定されているウィンドウに送る。このとき、メッセージのパラメータは変換しない。渡されるメッセージの一覧は、IVideoWindow::put_MessageDrain の場合と同じである。アプリケーションでは、このメソッドを使用して、フルスクリーン ビデオ用のホットキー サポートを実装できる。たとえば、Ctrl キーと P キーの組み合わせを監視し、それを合図にビデオをポーズするような処理が考えられる。
使用中のモニタ タイプを設定する。
構文
HRESULT SetMonitor( long Monitor );
パラメータ
- Monitor
- [in] 現在使用しているモニタ。
戻り値
HRESULT 値を返す。
注意
プライマリ ディスプレイ (0) 以外を設定すると、このメソッドはエラーを返す。DirectShow の将来のバージョンでは、レンダラがフルスクリーン ビデオを再生するモニタを、アプリケーションで選択できるようになる可能性がある。