次の方法で共有


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

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

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

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

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

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

ソフトウェア API とハードウェア 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 が提供する (システム) API

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

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

カスタム API

追加のオーディオ効果を追加することで、Windows オーディオ エクスペリエンスを強化するカスタム API を作成できます。

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

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

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

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

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

カスタム APO テストと要件

Microsoft HLK には、API で使用できるテストが用意されています。 オーディオ テストの詳細については、 Device.Audio テストと Device.Audio テスト に関する ページを参照してください。

これらの 2 つのテストは、API を使用する場合に特に役立ちます。

Audio EffectsDiscovery の検証 (手動) - 認定

SysFX テスト

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

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

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

オーディオ効果検出のサンプル

アプリケーション オーディオ効果の認識

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

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

オーディオ効果の配置

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

ストリーム効果 (SFX)

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

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

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

Mode Effect (MFX)

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

Endpoint Effect (EFX)

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

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

Windows 10 でのストリーム、モード、およびエンドポイント効果の配置を示す図。

複数のカスタム APO 効果

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

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

複数のアプリケーションがストリーム、モード、エンドポイントの APO 効果のさまざまな組み合わせにどのようにアクセスできるかを示す図。

手記 このページの一番下にあるスクロール バーを使用して、この図をすべて表示できます。

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

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

レンダリングおよびキャプチャ プロセスのソフトウェア モード効果とハードウェア エンドポイント効果を示す図。

ハードウェア効果を備えた DSP 搭載システム

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

ハードウェアに効果を実装する DSP 搭載システムを示す図。

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

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