オーディオ処理オブジェクトのアーキテクチャ

オーディオ処理オブジェクト (APO) は、Windows オーディオ ストリーム用のカスタマイズ可能なソフトウェア ベースのデジタル信号処理を提供します。

オーディオ処理オブジェクトの概要

Windows を使用すると、OEM やサードパーティのオーディオ ハードウェア メーカーは、オーディオ ドライバーの付加価値機能の一部としてカスタム デジタル信号処理のエフェクトを含めることができます。 これらのエフェクトは、ユーザー モード システム エフェクトのオーディオ処理オブジェクト (APO) としてパッケージ化されます。

オーディオ処理オブジェクト (APO) は、Windows オーディオ ストリーム用のソフトウェア ベースのデジタル信号処理を提供します。 APO は、特定のデジタル信号処理 (DSP) エフェクトを提供するために記述されたアルゴリズムを含む COM ホスト オブジェクトです。 この機能は、非公式に "オーディオ エフェクト" と呼ばれます。APO の例としては、グラフィック イコライザー、リバーブ、トレモロ、音響エコー キャンセル (AEC) 、自動ゲイン制御 (AGC) などがあります。 API は、COM ベースのリアルタイムのインプロセス オブジェクトです。

注: このドキュメントの説明と用語では、主にスピーカーなどの出力デバイスについて言及しています。 ただし、このテクノロジは対称であり、基本的に入力デバイスでは逆に動作します。

ソフトウェア APO とハードウェア DSP

ハードウェア デジタル信号プロセッサ (DSP) は、デジタル信号処理の運用ニーズに合わせて最適化されたアーキテクチャを備えた特殊なマイクロプロセッサ (または SIP ブロック) です。 ソフトウェア APO を使用する場合と比べて、目的に基づいて構築されたハードウェアでオーディオ処理を実装する場合には、大きな利点があります。 1 つの利点は、CPU 使用率と関連する消費電力が、ハードウェア実装 DSP によって低くなる可能性がある点です。

ソフトウェア ベースの APO を実装する前に、考慮する必要があるプロジェクトの目標と制約に特有の、考慮すべき長所と短所が他にもあります。

ソフトウェア ベースのエフェクトは、ストリームの初期化時にソフトウェア デバイス パイプに挿入されます。 これらのソリューションは、メイン CPU に対するすべてのエフェクト処理を実行し、外部ハードウェアに依存しません。 この種類のソリューションは、ドライバーとハードウェアが RAW 処理のみをサポートしている場合に、HDAudio、USB、Bluetooth デバイスなどの従来の Windows オーディオ ソリューションに最適です。 RAW 処理の詳細については、「オーディオ信号処理モード」を参照してください。

ハードウェア DSP のプロキシ APO

ハードウェア DSP に適用されるすべてのエフェクトには、プロキシ APO 経由でアドバタイズが実行される必要があります。 Microsoft では、既定のプロキシ APO (MsApoFxProxy.dll) を提供しています。 Microsoft が提供する APO を使用するには、以下のプロパティ セットとプロパティがサポートされている必要があります。

必要に応じて、独自のプロキシ APO を実装することもできます。

Windows が提供する (システム) APO

Windows では、さまざまなオーディオ エフェクトを提供する、既定の APO セットがインストールされます。 APO エフェクトが提供するシステムの一覧については、「オーディオ信号処理モード」を参照してください。

OEM は、システムが提供するすべての APO を含めたり、その一部またはすべてをカスタム APO に置き換えたりすることができます。

カスタム APO

その他のオーディオ エフェクトを追加することで、カスタム APO を作成して、Windows オーディオ エクスペリエンスを強化することができます。

OEM は、Windows を出荷する際に、提供されている Windows APO とカスタム APO の任意の組み合わせを含めることができます。

カスタム APO は、デバイス購入後のオーディオ エクスペリエンスを向上させるために、OEM またはサードパーティがインストールすることができます。 ユーザーは、標準の INF ファイルを使用してオーディオ デバイス ドライバーをインストールすると、システムの APO に自動的にアクセスすることができます。 独立系ハードウェア ベンダー (IHV) と相手先ブランド製造業者 (OEM) は、Microsoft クラス ドライバーを引き続き使用しながら、追加のカスタム システム エフェクトを提供することができます。 これを行うには、DSP アルゴリズムを APO としてパッケージ化し、オーディオ エンジンの信号処理グラフに APO を挿入するように標準 INF ファイルを変更します。

カスタム APO の作成の詳細については、「オーディオ処理オブジェクトの実装」を参照してください。

カスタム APO サポート アプリ

ユーザーがカスタム APO に関連付けられている設定を構成できるようにするために、ハードウェア サポート アプリを作成することをお勧めします。 詳細については、「ハードウェア サポート アプリ (HSA): ドライバー開発者向けの手順」を参照してください。

カスタム APO のテストと要件

Microsoft HLK には、APO で使用できるテストが用意されています。 オーディオ テストの詳細については、「Device.Audio のテストを行う方法」と「Device.Audio のテスト」を参照してください。

以下の 2 つのテストは、APO を使用する場合に特に役立ちます。

オーディオ EffectsDiscovery (手動) の検証 - 認定

SysFX テスト

API をサポートするためのオーディオ要件については、「Device.Audio の要件」を参照してください。

カスタム APO ツールとユーティリティ

"オーディオ エフェクト検出サンプル" を使用して、使用可能なオーディオ エフェクトを調べることができます。 このサンプルでは、レンダーとキャプチャのオーディオ デバイスのオーディオ エフェクトについてクエリを実行する方法と、オーディオ エフェクトを使用して変更を監視する方法を示します。 これは SDK サンプルの一部として含まれており、次のリンクを使用してダウンロードできます。

オーディオ エフェクト検出のサンプル

アプリケーション オーディオ エフェクトの認識

アプリケーションには、API を呼び出して、システムで現在どのオーディオ エフェクトがアクティブになっているか特定する機能があります。 オーディオ エフェクト認識 API の詳細については、「AudioRenderEffectsManager クラス」を参照してください。

オーディオ処理オブジェクトのアーキテクチャ

オーディオ エフェクトの配置

APO として実装されるオーディオ エフェクトには、3 つの異なる場所があります。 これらは、ストリーム エフェクト (SFX)、モード エフェクト (MFX)、およびエンドポイント エフェクト (EFX) の 3 つです。

ストリーム エフェクト (SFX)

ストリーム エフェクト APO には、すべてのストリームに対するエフェクトのインスタンスがあります。 ストリーム エフェクトは、指定されたモードのミックス (レンダー) の前、またはティー (キャプチャ) の後に適用され、ミキサーの前にチャンネル数を変更するために使用できます。 ストリーム エフェクトは、Raw ストリームには使用されません。

Windows の一部のバージョンでは、最適化として、SFX または MFX APO が RAW モードで読み込まれません。

  • Windows 8.1 では、RAW SFX または RAW MFX が読み込まれない
  • Windows 10 では、RAW MFX は読み込まれるが、RAW SFX は読み込まれない

モード エフェクト (MFX)

モード エフェクト (MFX) は、同じモードにマップされているすべてのストリームに適用されます。 モード エフェクトは、指定されたモードでは、ミックス (レンダー) の後、またはティー (キャプチャ) の前に適用されますが、すべてのモードの場合は、ミックス (レンダー) の前、またはティー (キャプチャ) の後に適用されます。 シナリオ固有のエフェクトやストリーム エフェクトの詳細を必要としないエフェクトは、ここに配置される必要があります。 周期性や形式などの同じ特性を共有する複数のストリームに対して存在するインスタンスが 1 つであるため、モード エフェクトを使用する方が電力効率が高くなります。

エンドポイント エフェクト (EFX)

エンドポイント エフェクト (EFX) は、同じエンドポイントを使用するすべてのストリームに適用されます。 エンドポイント エフェクトは、Raw ストリームにも常に適用されます。 つまり、すべてのモードのミックス (レンダー) の後、またはティー (キャプチャ) の前に適用されます。 エンドポイント エフェクトは慎重に使用する必要があり、使用方法に疑問がある場合は、[モード] 領域にエフェクトを配置してください。 エンドポイント領域に配置する必要があるいくつかのエフェクトは、スピーカー保護とスピーカー補正です。

次の図は、Windows 10 のストリーム (SFX)、モード (MFX) およびエンドポイント (EFX) のエフェクトを使用できる場所を示しています。

Diagram illustrating the placement of stream, mode, and endpoint effects in Windows 10.

複数のカスタム APO エフェクト

異なるアプリケーションで動作するように複数の APO ベースのエフェクトを構成することができます。

この図は、複数のアプリケーションが、ストリーム、モード、エンドポイントの APO エフェクトの複数の組み合わせに、アクセスする方法を示しています。 すべての APO は COM ベースであり、ユーザー モードで実行されます。 このシナリオでは、どのエフェクトもハードウェアまたはカーネル モードで実行されていません。

Diagram showing how multiple applications can access various combinations of stream, mode, and endpoint APO effects.

注: このページの一番下までスクロール バーで移動して、この図をすべて表示することができます。

レンダーとキャプチャのためのソフトウェア モード エフェクトとハードウェア エンドポイント エフェクト

この図は、レンダリングとキャプチャのためのソフトウェア モード エフェクトとハードウェア エンドポイント エフェクトを示しています。

Diagram displaying software mode effects and hardware endpoint effects for render and capture processes.

ハードウェア エフェクトを備えた DSP 搭載システム

この図は、ハードウェアにエフェクトを実装する DSP 搭載システムを示しています。 このシナリオでは、ハードウェアに実装されるエフェクトをアプリに通知するプロキシ APO を作成する必要があります。

Diagram depicting a DSP-equipped system implementing effects in hardware.

Windows オーディオ処理オブジェクト

ハードウェアオフロードオーディオドライバの実装