暫停期間管理音訊資源

為確保系統穩定性,並能進入暫停至 RAM (S2R) 或暫停至磁碟 (S2D) 等低功耗狀態,在電源轉換期間妥善管理音訊資源至關重要。

系統啟動暫停程序時,應用程式可能不會一律釋放音訊輸入或輸出串流。如果音訊串流處於啟用狀態,音訊子系統和底層硬體就無法進入閒置狀態,這可能會導致晶片系統 (SoC) 無法進入深層睡眠狀態。這會導致暫停嘗試失敗,並增加耗電量。

原始設備製造商 (OEM) 必須在音訊硬體抽象層 (HAL) 實作中,實作完善的回退機制,以處理暫停轉換期間的有效音訊串流。無論應用程式行為如何,這都是確保平台穩定性的必要條件。

應用程式應正確管理音訊資源,但系統無法依此進行基本電源狀態轉換。音訊 HAL 是適當的層級,可強制停用資源,確保系統能進入暫停狀態。建議您採用這種方法,以利進行穩健的電源管理。

實作電源管理

如要在 Audio HAL 中實作穩健的電源管理機制,請按照下列步驟操作:

  1. 偵測系統電源狀態變化,特別是轉換為暫停狀態。

  2. 系統準備暫停時,如果仍有任何音訊串流 (輸入和輸出) 處於啟用狀態,請進行干預:

    • 釋放硬體輸出串流,並捨棄音訊架構的輸入資料。
    • 釋放硬體輸入串流,並將無聲音訊傳送至架構。

    這項 HAL 層級的動作可確保音訊硬體進入閒置狀態,即使應用程式尚未釋出音訊資源,系統也能順利暫停。

  3. 系統從暫停狀態恢復時,請將音訊子系統還原為有效狀態。這包括取消先前靜音的任何輸出串流,以及重新啟用輸入串流,讓應用程式繼續播放及擷取音訊。

對應用程式的影響

暫停期間的 HAL 層級音訊資源管理會對應用程式造成下列影響:

  • 透明暫停:對於使用麥克風的應用程式,系統暫停 (進入 S2D 或 S2R) 是透明的。
  • 轉移期間音訊靜音:啟動暫停轉移後,HAL 會將有效串流設為靜音。應用程式會繼續執行,但暫停期間只會收到靜音音訊。
  • 自動繼續:系統恢復後,應用程式會自動開始接收或傳送真實音訊資料,不需要重新取得任何資源或執行復原動作。