ハードウェアによってオフロードされた APO エフェクト
Windows 10 バージョン 1511 以降では、オーディオ処理オブジェクト (API) のオフロードがサポートされています。 ハードウェア オフロード API を使用すると、パフォーマンスの向上に加えて、大幅な節電が可能になります。
ハードウェア オフロードの再生中、2 種類の API を読み込むことができます。
- オフロード ストリーム エフェクト (OSFX)
- オフロード モード エフェクト (OMFX)
ハードウェアによってオフロードされた APO エフェクトの概要
ハードウェアによってオフロードされたオーディオ処理とハードウェアによってオフロードされた APO
Windows 8 では、オーディオ エンジンが再設計されており、コンピューターのメイン オーディオ システムとは別に接続されているハードウェア デバイスにオフロードされたオーディオ ストリームを操作できるようになりました。 これは、ハードウェア オフロードと呼ばれます。 詳細については、「ハードウェア オフロード オーディオ処理」を参照してください。
ハードウェア オフロード機能は、主にバッファー サイズが大きい低電力シナリオを対象としています。 たとえば、対応システムでの低電力オーディオ (LPA) を再生中、CPU が小さなバッファーを処理するために頻繁に (たとえば、10 ミリ秒ごと) ウェイクアップしないよう、オーディオ バッファー のサイズまたは周期性を 1 秒に設定できます。
ハードウェアによってオフロードされた API とハードウェアによってオフロードされたオーディオ処理を実装すると、電力効率を最大限に高めることができます。
次の図は、オーディオ処理オブジェクト アーキテクチャを示しています。 図の右側には、ハードウェアによってオフロードされた OSFX および OMFX エフェクトまで通信しているアプリケーションが示されています。
APO 効果をオフロードするハードウェアの実装
ハードウェアによってオフロードされた APO は、「オーディオ処理オブジェクト アーキテクチャ」と「オーディオ処理オブジェクトの実装」で説明されているのと同じ基本要件と設計原則に従う必要があります。
サポートされているオーディオ形式の実装ガイドライン
ハードウェアによってオフロードされた API の場合、サポートされているオーディオ形式に関していくつかの追加の考慮事項を考慮する必要があります。
各 APO には IAudioProcessingObject::IsInputFormatSupported メソッドが実装されています。これは、オーディオ グラフのビルド中、出力オーディオ形式と、任意の形式変換が必要かどうかを判断するために使用されます。
HRESULT IsInputFormatSupported(
[in, optional] IAudioMediaType *pOppositeFormat,
[in, optional] IAudioMediaType *pRequestedInputFormat,
[out, optional] IAudioMediaType **ppSupportedInputFormat
);
オフロード レンダリング エンドポイントは、ホスト/システム ピン レンダリングでサポートされる既定の形式など、さまざまな形式をサポートできます。 オフロード APO では、(サポートされている形式を使用して) レンダリング ストリームが追加の形式変換を実行する必要がないよう、これらすべての形式をサポートする必要があります。
オフロード SFX では、形式変換を実装し、より広い範囲の形式を受け入れることができます。 たとえば、オフロード SFX がヘッドフォン仮想化を提供する場合 (つまり、5.1 チャンネル オーディオをステレオに変換する場合)、このメソッドの適切な入出力ペアの S_OK を返す必要があります。
オフロード SFX は、オフロード ピンでサポートされている形式を確認し、機能をまとめてサポート/拡張する必要があります。
オフロード MFX は、入力ストリームの形式を変更することができませんが、オフロード エンドポイントによって提供されるさまざまな形式をサポートし、不要な形式変換をなくす必要があります。
オフロード ピンでのレンダリング時、そのピンでアクティブなストリームは 1 つだけのため、ストリームのミキシングは行われません。 そのため、ストリーム レベルとモード レベルの両方でオーディオを処理する必要はありません。 したがって、オーディオ エフェクトは、ストリーム エフェクトとモード エフェクトの両方として有効にする必要があるとは限りません。 オフロードされたエンドポイントは、より多くのストリームをサポートします。システムの処理アーキテクチャによっては、オフロード処理を SFX/MFX に組み込む必要があります。
INF ファイル エントリ
次の INF ファイル エントリを実装し、オフロード再生中に読み込まれるエフェクトを定義します。 INF ファイルのプロパティ キーは、オフロードされた API の CLSID をエフェクト プロパティ ストアに設定するようオーディオ エンドポイント ビルダーに指示します。 この情報は、効果が配置されている上位水準器のアプリに通知するために使用されるオーディオ グラフを作成するために使用されます。
プロパティ キー | GUID |
---|---|
PKEY_FX_Offload_StreamEffectClsid | {D04E05A6-594B-4FB6-A80D-01AF5EED7D1D},11 |
PKEY_FX_Offload_ModeEffectClsid | {D04E05A6-594B-4FB6-A80D-01AF5EED7D1D},12 |
PKEY_SFX_Offload_ProcessingModes_Supported_For_Streaming | {D3993A3F-99C2-4402-B5EC-A92A0367664B},11 |
PKEY_MFX_Offload_ProcessingModes_Supported_For_Streaming | {D3993A3F-99C2-4402-B5EC-A92A0367664B},12 |