硬體卸載 APO 效果
在 Windows 10 1511 版和更新版本中,支援卸載 (ADO) 的音訊處理物件。 除了可能的效能增強功能之外,使用硬體卸載的 APO 時,還有大量的可用電源節省。
在硬體卸載播放期間,可以載入兩種類型的 ADO。
- 卸載 OSFX (資料流程效果)
- OMFX) (卸載模式效果
硬體卸載 APO 效果概觀
硬體卸載音訊處理和硬體卸載的 API
在Windows 8中,音訊引擎已重新設計為使用已卸載至與電腦主要音訊系統分開但連線到硬體裝置的音訊串流。 這稱為硬體卸載。 如需詳細資訊,請參閱 硬體卸載的音訊處理。
硬體卸載功能主要是針對具有較大緩衝區大小的低電源案例。 例如,在支援系統的低電源音訊 (LPA) 播放期間,音訊緩衝區大小或週期性可能會設定為 1 秒,因此 CPU 不會經常喚醒來處理小型緩衝區 (,例如每 10 毫秒) 一次。
實作硬體卸載的 ADO 以及硬體卸載的音訊處理,可讓您將電源效率最大化。
下圖顯示音訊處理物件架構。 圖表右側顯示與硬體卸載 OSFX 和 OMFX 效果通訊的應用程式。
實作硬體卸載 APO 效果
硬體卸載 APO 必須遵循 音訊處理物件架構 和 實作音訊處理物件中所述的相同基本需求和設計原則。
支援的音訊格式實作指導方針
對於硬體卸載的 ADO,您必須將一些額外的考慮提供給支援的音訊格式。
每個 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 檔案屬性索引鍵會指示音訊端點產生器將 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 |