Platform SDK: DirectX

DirectDraw ビデオ ポート拡張機能について

[Visual Basic]

ここでは、C++ でのアプリケーション開発について説明する。Visual Basic for DirectX 7.0 ではビデオ ポートをサポートしていない。

[C++]

DirectDraw は、DirectDrawVideoPort オブジェクトを含むために拡張された。このオブジェクトはビデオ ポート技術を利用して、IDDVideoPortContainer および IDirectDrawVideoPort インターフェイスからサービスを提供する。

DirectDrawVideoPort オブジェクトはビデオ デコーダを制御しない。それは、DirectDraw がビデオ ソースを制御するのではなく、ビデオ デコーダ自体のサービスを提供するからである。つまり、ビデオ ポートの範囲を超えているのである。むしろ、DirectDrawVideoPort オブジェクトは、ビデオ ポート自体を表す。このオブジェクトは、イメージの変更、フリッピングの実行、あるいは他のサービスの実行におけるインターフェイス メソッドから設定されるパラメータを使用することにより、入ってくる信号をモニタしたり、フレーム バッファにイメージ データを渡したりする。

IDirectDraw7::QueryInterface メソッドを呼び出すことで取得できる IDDVideoPortContainer インターフェイスは、その能力に対するハードウェアを照会したり、ビデオ ポート オブジェクトを作成するためのメソッドを提供する。ビデオ ポート オブジェクトを作成するには、IDDVideoPortContainer::CreateVideoPort メソッドを呼び出す。ビデオ ポート オブジェクトは、IDirectDrawVideoPort インターフェイスからその機能を明らかにして、ビデオ ポート ハードウェア自体を操作できるようにする。これらのインターフェイスを使うことにより、ビデオ ポートの能力を調べたり、イメージ データを受け取るオーバーレイ サーフェスを指定したり、ビデオの再生を開始/停止したり、クロッピング、カラー コントロール、スケーリング、収縮などのエフェクトをイメージ データに付けるために処理するハードウェア パラメータを設定できる。

DirectDraw ビデオ ポート拡張機能は、複数の DirectDrawVideoPort オブジェクトを作成することにより、同一マシン上に複数のビデオ ポートを提供する。同一マシン上の複数のビデオ ポートが同じである必要はない。つまり、個々のポートはハードウェアの違いの有無にかかわらず、個別に列挙され、別々に構成される。

DirectX の一般的な考えに従うこの技術により、プログラマはハードウェア機能へ下位レベルのアクセスを行うときに、これらの機能を特定のハードウェア実装の詳細から分離できる。ハイレベルの API ではない。