在 Windows 10 版本 1511 和之後版本中,支援音訊處理物件(APOs)的卸載功能。 除了可能的效能提升之外,當使用硬體卸載的APOs時,還有可能顯著地節省電力。
在硬體卸載的播放過程中,可以載入兩種類型的 APO。
- 卸載串流效果(OSFX)
- 卸載模式效果 (OMFX)
硬體卸載的 APO 效果概覽
硬體卸載音訊處理和硬體卸載的音效處理物件 (APOs)
在 Windows 8 中,音訊引擎已經過重新設計,以便處理已被卸載至與電腦主要音訊系統分開但仍然連接的硬體裝置的音訊串流。 這稱為硬體卸除。 如需詳細資訊,請參閱 Hardware-Offloaded 音訊處理。
硬體卸除功能主要針對具有較大緩衝區大小的低功率案例。 例如,在支持系統中的低功率音訊 (LPA) 播放期間,音訊緩衝區大小或週期性可能會設定為 1 秒,讓 CPU 不會經常喚醒以處理小型緩衝區(例如,每 10 毫秒)。
實作硬體卸除的APOs以及硬體卸除的音訊處理,可讓您將電源效率最大化。
下圖顯示音訊處理物件架構。 應用程式與硬體卸載的 OSFX 和 OMFX 效果通訊,顯示在圖表的右側。
實現硬體卸載的 APO 效果
硬體卸除的 APO 必須遵循 音訊處理物件架構 和 實作音訊處理物件中所述的相同基本需求和設計原則。
支援的音訊格式實作指導方針
針對硬體卸載的APOs,對支援的音訊格式需要進行一些額外的考慮。
每個 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 無法變更輸入數據流的格式,但仍需要支援卸載端點所提供的各種格式,並排除任何不必要的格式轉換。
在卸載針腳渲染期間,該針腳上只有一個數據流是活躍的,因此不會有串流混合。 因此,不需要同時處理數據流層級和模式層級的音訊。 因此,音訊效果可能不需要同時啟用為串流效果和模式效果。 卸除的端點將支援更多數據流,而且視系統的處理架構而定,可能需要將卸載處理納入SFX/MFX。
INF 檔案條目
實作下列 INF 檔案專案,以定義將在卸除播放期間載入的效果。 INF 檔案屬性金鑰會指示音訊端點產生器將卸載的 APOs 的 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 |