Platform SDK: DirectX |
ここでは、C++ でのアプリケーション開発について説明する。Visual Basic for DirectX 7.0 ではビデオ ポートをサポートしていない。
ビデオ ポートはディスプレイ デバイス上のハードウェアであり、CPU や PCI バスをバイパスして、フレーム バッファ内のサーフェスへ直接アクセスできる。直接フレーム バッファ アクセスは、CPU に著しい負担をかけることなく、ライブ ビデオまたは録音ビデオを効率的に再生できる。サーフェス内に入ってしまえば、イメージをオーバーレイとして表示したり、Direct3D テクスチャとして使用したり、キャプチャや他のプロセスから CPU にアクセスできる。次にこの技術を構成するコンポーネントやそのコンポーネントの動作方法についての一般論を説明する。
データ フロー
ビデオ ポートの装備されているマシンでは、ビデオ ストリームのデータが、ビデオ デコーダやビデオ ポートを通してビデオ ソースからフレーム バッファに直接フローする。通常、これらのコンポーネントは、ディスプレイ アダプタ上に共に存在するが、物理的に互いに接続された個別のハードウェア コンポーネント上に分散することもできる。次の図でこのデータフローの例を示す。
ビデオ ソース
ビデオ ポート技術では、ビデオ ソースは厳密にハードウェア ビデオ入力デバイスのことであり、ズーム ビデオ ポート、MPEG コーデック、あるいはその他のハードウェア ソースなどである。これらのソースは、ビデオ デコーダへの物理的なコネクションにより、NTSC、PAL、および SECAM を含むさまざまなフォーマットで信号をブロードキャストする。
ビデオ デコーダ
ビデオ デコーダもまた、ハードウェア コンポーネントである。ビデオ デコーダはビデオ ソースにより提供される情報を解読して、統一規格の接続フォーマットでそれをビデオ ポートに送る。デコーダはビデオ ポートへの物理的なコネクションを所有し、ストリーム クラス ミニドライバからそのサービスを公開する。デコーダはビデオ ポートにビデオ データ、ビデオ クロック、および同期情報を送らなくてはならない。
ビデオ ポート
データ フローパスの他のコンポーネントと同様、ビデオ ポートはハードウェアの 1 つである。ビデオ ポートはディスプレイ アダプタの VGA チップ上に存在し、フレーム バッファに直接アクセスできる。デコーダから送られる情報を受け取り、それを処理してから、表示するフレーム バッファに配置する。処理中に、ビデオ ポートはスケーリング、収縮、カラー コントロール、クロッピングなどのサービスを提供するイメージ データを処理できる。
フレーム バッファ
フレーム バッファは、ビデオ ポートから提供されるビデオ データを受け取る。そのデータを受け取ってしまえば、アプリケーションはイメージ データをプログラムに基づいて操作したり、他の位置にブリットしたり、またオーバーレイを利用してディスプレイ上に表示できる (頻繁に使用される)。