音訊處理物件 (APOs),為 Windows 音訊串流提供可自定義的軟體型數位訊號處理。
音訊處理物件概觀
Windows 可讓 OEM 和第三方音訊硬體製造商將自定義數位訊號處理效果納入其音訊驅動程式加值功能的一部分。 這些效果會封裝為使用者模式系統效果音訊處理物件 (API)。
音訊處理物件 (API) 為 Windows 音訊資料流程提供軟體型數位訊號處理。 APO 是 COM 主機物件,其中包含撰寫以提供特定數位訊號處理 (DSP) 效果的演算法。 此功能非正式地稱為「音訊效果」。APO 的範例包括圖形等化器、混響、顫音、聲學迴聲消除 (AEC) 和自動增益控制 (AGC)。 APOs 是以 COM 為基礎的即時內部程序物件。
便條 本文件中的描述和術語主要涉及輸出裝置,例如揚聲器。 該技術是對稱的,基本上在輸入設備上以相反的方式運作。
軟體 API 與硬體 DSP
硬體數位訊號處理器 (DSP) 是一種專用的微處理器 (或 SIP 區塊),其架構針對數位訊號處理的操作需求進行了最佳化。 與使用軟體 APO 相比,在專用硬體中實作音訊處理可能具有顯著優勢。 一個優點是,使用硬體實作的 DSP 可能會降低 CPU 使用率和相關功耗。
在實作軟體型 APO 之前,您需要考慮其他優點和缺點,具體取決於您的專案目標和限制。
軟體型效果會在串流初始化時插入軟體裝置管道中。 這些解決方案在主 CPU 上進行所有效果處理,不依賴外部硬體。 當驅動程式和硬體僅支援 RAW 處理時,這種類型的解決方案最適合傳統的 Windows 音訊解決方案,例如 HDAudio、USB 和藍牙裝置。 如需 RAW 處理的詳細資訊,請參閱 音訊訊號處理模式。
硬體 DSP 的 Proxy APO
在硬體DSP中套用的任何效果都需要透過代理APO來宣告。 Microsoft 提供預設 Proxy APO (MsApoFxProxy.dll)。 若要使用 Microsoft 提供的 APO,必須支援此屬性集和屬性。
或者,您可以實作自己的 Proxy APO。
Windows 提供的 (系統) API
Windows 會安裝一組預設的 API,以提供許多不同的音訊效果。 如需系統提供的 APO 效果清單,請參閱 音訊訊號處理模式。
OEM 可以包含所有系統提供的 API,或將部分或全部取代為自訂 API。
自訂 API
可以建立自訂 API,透過新增其他音訊效果來增強 Windows 音訊體驗。
OEM 在出貨 Windows 時,可以包含所提供 Windows API 和自定義 API 的任何組合。
OEM 或第三方可以安裝自訂 APIO,以增強購買裝置後的音訊體驗。 當使用者使用標準 INF 檔案安裝音訊裝置驅動程式時,他們會自動存取系統的 API。 獨立硬體廠商 (IHV) 和原始設備製造商 (OEM) 可以提供其他自定義系統效果,同時仍使用 Microsoft 類別驅動程式。 他們會將 DSP 演算法封裝為 APO,並修改標準 INF 檔案,以將其 API 插入音訊引擎的訊號處理圖形中,以達到此目的。
如需建立自訂 API 的詳細資訊,請參閱 實作音訊處理物件。
自定義 APO 支持應用程序
若要允許使用者設定與自訂 APO 相關聯的設定,建議的方法是建立硬體支援應用程式。 如需詳細資訊,請參閱 硬體支援應用程式 (HSA):驅動程式開發人員的步驟。
自訂 APO 測試和需求
Microsoft HLK 提供可與 API 搭配使用的測試。 如需音訊測試的詳細資訊,請參閱 Device.Audio 測試和 Device.Audio 測試。
這兩個測試在使用 API 時特別有用。
如需支援 API 之音訊需求的相關資訊,請參閱 Device.Audio 需求。
自訂 APO 工具和實用程式
您可以使用「音訊效果發現範例」來探索可用的音訊效果。 此範例示範如何在轉譯和擷取音訊裝置上查詢音訊效果,以及如何監視音訊效果的變更。 它包含在SDK範例中,並可使用此連結下載:
應用音訊效果感知
應用程式能夠呼叫 API,以判斷系統上目前作用中的音訊效果。 如需音訊效果感知 API 的詳細資訊,請參閱 AudioRenderEffectsManager 類別。
音訊處理物件架構
音訊效果的放置
音訊效果實作為 API 有三個不同的位置。 它們位於串流效果 (SFX)、模式效果 (MFX) 和端點效果 (EFX) 中。
串流效果 (SFX)
流效果 APO 具有每個流的效果實例。 串流效果在給定模式下可位於混音器(渲染)之前或在分配器(分流)之後,可用於在混音器之前變更通道數量。 串流效果不會用於原始資料流。
某些版本的 Windows 為了優化,不會在 RAW 模式載入 SFX 或 MFX APO。
- Windows 8.1 不會載入 RAW SFX 或 RAW MFX
- Windows 10 載入 RAW MFX 但不載入 RAW SFX
模式效果 (MFX)
模式效果(MFX)會套用至映射到相同模式的所有串流。 模式效果會在混音(渲染)之後或給定模式的分流 (擷取)之前套用,但在所有模式的混音(渲染)之前或分流(擷取)之後套用。 任何場景特定效果或不需要流效果細節的效果都應該放在此處。 使用模式效應會更具能源效率,因為有一個單一實例可以供多個共享相同特性如週期性和格式的資料串流使用。
端點效應 (EFX)
所有使用相同端點的資料流程都會套用端點效應(EFX)。 端點效果一律會套用,甚至套用至原始資料流。 也就是說,它是在所有模式的混合(渲染)之後或信號分流(捕獲)處理之前。 端點效應應謹慎使用,如有疑問,應將效應放在模式區域中。 應放置在端點區域的一些效果包括揚聲器保護和揚聲器補償。
此圖顯示 Windows 10 資料流程 (SFX)、模式 (MFX) 和端點 (EFX) 效果的可能位置。
多種自訂 APO 效果
可以配置多個基於 APO 的效果以與不同的應用程序一起使用。
此圖說明多個應用程式如何存取資料流程、模式和端點 APO 效果的多種組合。 所有 API 都是以 COM 為基礎,並在使用者模式中執行。 在此情境中,沒有任何效果在硬體或核心模式下執行。
圖表顯示多個應用程式如何存取串流、模式和端點 APO 效果的各種組合。
注意 您可以使用此頁面最底部的捲軸來查看整個圖表。
用於渲染和捕獲的軟件模式效果和硬件端點效果
此圖說明轉譯和擷取的軟體模式效果和硬體端點效果。
配備 DSP 的硬體效果系統
此圖說明了在硬體中實現效果的配備 DSP 的系統。 在此案例中,應該建立 Proxy APO,以通知應用程式硬體中實作的效果。