Microsoft DirectX 8.0

DirectShow アプリケーション プログラミングの概要

ここでは、Microsoft® DirectShow® アプリケーションを作成するために必要な、基本的な用語と概念について説明する。DirectShow で使用される専門用語についても説明する。この内容を読むと、初めての DirectShow アプリケーションを作成する準備が整う。

ここでは次の内容について説明する。

フィルタ グラフ

DirectShow を構成する基本要素は、フィルタと呼ばれるソフトウェア コンポーネントである。フィルタは、通常、マルチメディア ストリームに対して単一の操作を実行する。たとえば、DirectShow には次のようなフィルタがある。

フィルタは入力を受け取り、出力を生成する。たとえば、フィルタが MPEG-1 ビデオをデコードする場合、入力は MPEG でエンコードされたストリームであり、出力は圧縮されていない RGB ビデオ ストリームである。

指定されたタスクを実行するために、アプリケーションでは複数のフィルタを接続し、1 つのフィルタからの出力を別のフィルタの入力とする。接続されたフィルタの集合は、フィルタ グラフと呼ばれる。この概念を表す図として、AVI ファイルを再生するフィルタ グラフを次に示す。

AVI ファイルを再生するフィルタ グラフ

アプリケーションではフィルタ グラフの個々のフィルタを管理する必要がない。DirectShow にはフィルタ グラフ マネージャと呼ばれる上位レベルのコンポーネントが用意されている。フィルタ グラフ マネージャは、グラフを通過するデータの流れを制御する。アプリケーションでは、"Run" (グラフの開始から終わりまでデータを移動する) や "Stop" (データの流れを停止する) などの上位レベルの API 呼び出しを行う。ストリーム操作をより直接的に制御する必要がある場合は、COM インターフェイスを通してフィルタに直接アクセスすることができる。また、フィルタ グラフ マネージャはアプリケーションにイベント通知を渡す。それによって、アプリケーションでストリームの終わりなどのイベントに応答できる。

さらに、フィルタ グラフ マネージャを使用すると、フィルタ グラフを構築するプロセスが簡単になる。たとえば、ファイル名を指定すると、そのファイルを再生するグラフがフィルタ グラフ マネージャによって構築される。

DirectShow アプリケーションの作成

一般的な DirectShow アプリケーションは、次の図に示す 3 つの基本的な手順を実行する。

一般的な DirectShow アプリケーション

  1. CoCreateInstance 関数を使用してフィルタ グラフ マネージャのインスタンスを作成する。
  2. フィルタ グラフ マネージャを使用してフィルタ グラフを構築する。ほかの DirectShow ヘルパー コンポーネントを使用することもできる。
  3. フィルタ グラフを制御し、イベントに応答する。

DirectShow で作業を開始するには、「ファイルの再生法」を参照すること。ファイルを再生する簡単なコンソール アプリケーションが示されている。このアプリケーションは、従来の "Hello World" プログラムの DirectShow 版である。「ビデオ ウィンドウの設定」および「イベントへの応答」では、そのプログラムを簡単な Windows アプリケーションに拡張している。