実装の概要

このトピックでは、ハードウェア オフロードオーディオ ストリームを処理できるオーディオ アダプターのドライバーを開発するときに注意する必要がある実装の要点の概要について説明します。

新しい KS フィルター トポロジ

Windows 8以降のオペレーティング システムでは、オンボード ハードウェア オーディオ エンジンを使用してオーディオ ストリームを処理できる新しい種類のオーディオ アダプターのサポートが提供されています。 このようなオーディオ アダプターを開発する場合、関連付けられているオーディオ ドライバーは、このアダプターとそのドライバーの機能を検出、使用、および適切に公開できるように、特定の方法でユーザー モードのオーディオ システムにこの事実を公開する必要があります。

オーディオ ドライバーがこれらの新しいオーディオ アダプターのハードウェア機能を公開できるようにするために、Windows 8では、ドライバーが使用する必要がある新しい KS フィルター トポロジが導入されています。

the new ks-filter topology, showing a host process input pin, an offloaded audio input pin, and a loopback output pin. audio processing is applied to the audio streams from the offloaded audio and host process pins.the loopback path is taken from the output of the final processing stage and leads directly out of the ks-filter topology. the other two streams flow through the dac and out of the ks-filter topology.

上の図に示すように、KS フィルター トポロジは、ハードウェア経由のデータ パスを表し、それらのパスで使用できる関数も示しています。 オフロードされたオーディオを処理できるオーディオ アダプターの場合、KS フィルターには次の入力と出力 (ピンと呼ばれます) があります。

  • 1 つのホスト プロセスピン。 これは、ソフトウェア オーディオ エンジンからの KS フィルターへの入力を表します。

  • 1 つのループバック ピン。 これは、ハードウェア オーディオ エンジンから Windows オーディオ セッション API (WASAPI) レイヤーへの出力を表します。

  • オフロードされたオーディオ ピンの数。 この図は、この種類の 1 つのピンのみを示していますが、IHV は任意の数 (n) のピンを自由に実装できます。

この新しいタイプの KS フィルター トポロジのピンの詳細については、「 アーキテクチャの概要」を参照してください。 オーディオ アダプターとそのドライバーの検出につながるユーザー モード オーディオ システムの実際のサービスは、AudioEndpointBuilder です。 AudioEndpointBuilder サービスは、デバイス インターフェイスの到着と削除の KSCATEGORY_AUDIO クラスを監視します。 オーディオ デバイス ドライバーが KSCATEGORY_AUDIO デバイス インターフェイス クラスの新しいインスタンスを登録すると、デバイス インターフェイスの到着通知がオフになります。 AudioEndpointBuilder サービスは、デバイス インターフェイス到着通知を検出し、アルゴリズムを使用してシステム内のオーディオ デバイスのトポロジを調べて、適切なアクションを実行できるようにします。

そのため、オフロードされたオーディオを処理できるアダプターをサポートするようにオーディオ ドライバーを開発する場合、ドライバーは新しく定義された KSNODETYPE_AUDIO_ENGINE オーディオ エンドポイントを使用してハードウェア オーディオ エンジンの機能を公開する必要があります。 オーディオ エンドポイント検出プロセスの詳細については、「 オーディオ エンドポイント ビルダー アルゴリズム」を参照してください。

ユーザー インターフェイスに関する考慮事項

オフロードされたオーディオを処理できるオーディオ アダプターの基になるハードウェア機能を制御するオーディオ ドライバーを開発しました。 これは、ドライバーがアダプターの機能を制御する方法に関する最高の知識を持っていることを意味します。 そのため、アダプターの機能を選択、有効化、無効化できるオプションの形式でエンド ユーザーに公開する UI を開発する必要があります。

ただし、開発したオーディオ処理オブジェクト (API) の制御に使用される UI が既にある場合は、この UI を拡張して新しいオーディオ アダプターを操作できます。 この場合、UI の拡張機能は、API のソフトウェア コントロールとアダプターのハードウェア コントロールを提供します。

アプリケーションへの影響

この新しい種類のオーディオ アダプターとそれに関連するドライバーに関して説明されている機能は、WASAPI、Media Foundation、Media Engine、または HTML 5 <オーディオ> タグを介して UWP アプリで使用できます。 Wave と DSound は UWP アプリでは使用できないため、使用できないことに注意してください。 また、デスクトップ アプリケーションでは、ハードウェア オフロードオーディオをサポートするオーディオ アダプターのオフロード機能を使用できないことに注意してください。 これらのアプリケーションは引き続きオーディオをレンダリングできますが、ソフトウェア オーディオ エンジンを使用するホスト ピンを介してのみレンダリングできます。

UWP アプリがメディア コンテンツをストリーミングし、Media Foundation、Media Engine、または HTML 5 <オーディオ タグを使用する場合、適切なオーディオ> カテゴリがストリームに設定されている限り、アプリはハードウェア オフロード用に自動的にオプトインされます。 ハードウェア オフロードのオプトインは、ストリームごとに行われます。

WASAPI またはストリーミング通信を使用する UWP アプリでは、ハードウェア オフロードを明示的にオプトインする必要があります。