オーディオ フィルター グラフ

KS フィルター グラフは、1 つ以上のデータ ストリームを処理するために接続された KS フィルターのコレクションです。 オーディオ フィルター グラフは、オーディオ データ ストリームを処理するフィルターで構成される KS フィルター グラフです。 たとえば、次の図は、オーディオのレンダリングとキャプチャを実行するオーディオ フィルター グラフの簡略化された図です。

Diagram illustrating a simple audio filter graph for rendering and capture.

図のフィルター グラフは、2 つのウェーブ フィルターの上部にあるピンから、2 つのトポロジ フィルターの下部にあるピンまで拡張されています。 ユーザーモード ソフトウェア モジュールと外部オーディオ デバイス (つまり、スピーカーとマイク) はグラフの外側にあります。

図の下半分の 4 つのフィルターは、ウェーブ ストリームをレンダリングおよびキャプチャできるオーディオ アダプター上のハードウェア デバイスを表しています。 図に示す各フィルターは、ミニポート ドライバーにポート ドライバーをバインドすることによって実装されます。 アダプター ドライバーは、WaveRT、WavePci、または WaveCyclic ポート ドライバーを対応する WaveXxx ミニポート ドライバーにバインドすることで、フィルターを形成します。 アダプター ドライバーは、トポロジ ポート ドライバーをトポロジ ミニポート ドライバーにバインドすることで、トポロジ フィルターを形成します。

図の左側では、DirectSound または waveOut アプリケーション (上) からのオーディオ ストリームがスピーカー (下部) を介して再生されます。 右側の DirectSoundCapture または waveIn アプリケーション (上部) は、マイク (下部) から入力されたストリームを記録します。 両側では、Windows Vista でシステムのミキシングを実行するオーディオ エンジンのインスタンスが、ウェーブ フィルターとアプリケーションの間に介在します。 (Windows Server 2003、Windows XP、Windows 2000、Windows Me/98 では、KMixer システム ドライバーはシステム ミキサーです)。

オーディオ エンジンは、ユーザー モードで実行され、ソース ピンとシンク ピンでさまざまなオーディオ形式とサンプル レートの間で簡単に変換できる汎用性の高いソフトウェア フィルターです。 オーディオ エンジンは、通常、ハードウェアが構成されているストリーム形式と、アプリケーションが想定するストリーム形式の違いに対応できます。

上の図の下部には、スピーカーを駆動するソース ピンと、マイク信号を受け取るシンク ピンにブリッジ ピンというラベルが付いています。 ブリッジ ピンは、フィルター グラフと外部世界との間の境界を橋渡します。

上の図では、各ウェーブ フィルターとそれに対応するトポロジ フィルターの間に表示されるデータ パスは、通常、物理接続 (ソフトウェアで構成できないオーディオ アダプター上の固定のハードウェア接続) を表しています。

ブリッジ ピンまたは物理接続を持つピンは永続的に接続されているため、ピンは暗黙的に存在し、インスタンス化または削除することはできません。 したがって、IRP を送信するブリッジ ピン オブジェクト (ブリッジ ピンのインスタンス) はありませんが、フィルター オブジェクトに対してそのブリッジ ピンの KSPROPSETID_Pin プロパティを照会できます。 物理接続を持つピンにも同じ規則が適用されます。

ブリッジ ピンまたは物理接続を通過する信号は、アナログまたはデジタルのいずれかです。

たとえば、上の図では、2 つのブリッジ ピンは両方ともアナログ信号を処理します。 左側のブリッジ ピンは、DAC (デジタルアナログ コンバーター) からの出力信号を送信し、スピーカーを駆動します。 右側のブリッジ ピンは、マイクからの信号を受信し、ADC (アナログデジタル コンバーター) に入ります。 ただし、ブリッジ ピンは、オーディオ デバイス上の S/PDIF コネクタを表す場合もあります。 この場合、ブリッジ ピンを通過する信号はアナログではなくデジタルです。