カクタスソフトウェア
カクタスソフトウェア
サウンド MIDI マルチメディア アプリケーション

フィルターとフィルタグラフ

一般的なAPIはデータを操作する手続きの集合体ですが、DirectShowはフィルターと呼ばれるモジュールを操作する手続きの集合体です。旧来のAPIを「データ志向」と言うなら、DirectShowは「モジュール志向」と言えるでしょう。DirectShowはさまざまなフィルターをつなぎ合わせることでより高度な機能を実現します。フィルターのつなぎ方を変えることで仕様を変更し、新しいフィルターを作成することで機能を拡張します。

フィルター

フィルターとはDirectShowで用いるモジュールで1つの独立したプログラムです。拡張子は「ax」です。フィルターはお互い連携しながら動作します。その様子を示すためによく以下のようなチャートを利用します。

フィルターにはピンと呼ばれる端子があり、ピンをつなぐことでフィルターどうしを関連付けます。データは上流の出力ピンから下流の入力ピンへ流れます。

フィルターはその機能から大きく5つに分類できます。

ソースフィルター

データ入力を行うフィルターです。出力ピンしか持ちません。ファイルからの入力、マイクやビデオカメラからの入力を行います。

1つの入力デバイスが複数の出力ピンを持つことがあります。例:MIC、LINE IN。

変換フィルター

データ変換を行うフィルターです。フォーマット変換、圧縮・解凍などを行います。入力ピン・出力ピンを1つづつ持ちます。

スプリッタフィルター

入力されたデータを複数のデータに分離するフィルターです。1つの入力ピンと複数の出力ピンを持ちます。

MUXフィルター

複数の入力を一本にまとめるフィルターです。複数の入力ピンと1つの出力ピンを持ちます。

レンダリングフィルター

データ出力を行うフィルターです。入力ピンしか持ちません。ファイルへの書き込み、ビデオ・サウンドの再生などを行います。

基本的に入力フィルターは左側、出力フィルターは右側、データは左から右へ流れるよう書く決まりになっています。ただし誤解がないよう工夫すればこの限りではありません。

フィルタグラフ

フィルターが複数連なったものをフィルタグラフと呼びます。フィルターは単体で運用されることは無く、通常フィルタグラフの状態で運用されます。フィルタグラフ内のフィルターを管理するCOMオブジェクトをグラフマネージャーと呼びます。

DirectShowにおけるプログラミングの目標は、目的の仕様を満足するフィルタグラフを作成することと、そのフィルタグラフを安全に運用することの2点です。

ドキュメントの先頭へ

カクタスソフトウェア 技術協力 資料室 資料室の広場 SourceForge.jp お問い合わせ