Android 10 版本包含下列高解析度音訊改善項目:
- 浮點:WAV、FLAC 編解碼器和擷取器已更新,以支援浮點 (24 位元以上的無損精確度)。更新 Downmix 和 Virtualizer 效果,以便浮動。MediaPlayer (NuPlayer) 允許更新精確度。
- 高頻率:WAV、FLAC 轉碼器和擷取器已更新,可支援 192 kHz。在標準頻率下,已測試預設的 Android 提供效果是否支援 192 kHz。允許的標準頻率為 88.2 kHz、96 kHz、176.4 kHz 和 192 kHz。
- 多聲道:我們測試預設的 Android 播放效果,以便支援多聲道至八聲道。
- 時間:整個音訊架構都會納入時間資訊。
自 Android 9 起,以下改善項目不需要任何合作夥伴導入:
- 由於
AudioTrack
的用戶端例項有限,在 Android 8.x 中的應用程式中會造成問題,因此同時用戶端輸出音軌的數量從 14 個增加到 40 個。 - 用戶端/伺服器記憶體上限從 4 MB 提高至 32 MB (取決於裝置總記憶體),以便同時播放更多高解析度音訊軌。
- 混合軌跡總數從 32 增加至 256,以免應用程式與系統 UI 之間發生資源爭用情形。
輸出效果變更
如要瞭解 Android 11 版本的異動內容,請參閱「音效」。
在 Android 9 發布之前,特效鏈條處理作業是以立體聲 int16 取樣格式實作。這有幾項限制:
- 所有輸出效果都會強制將浮點音訊資料轉換為 int16,導致精確度降低。
- 輸出效果已從輸出匯出端拒絕,因為其管道數量超過兩個。
在 Android 9 版本中,效果鏈條處理管道已升級為支援多管道浮點格式。重點:
- Android 軟體特效已遷移至立體浮點。
- 格式轉接器支援舊版效果,可視需要將浮點值轉換為 int16。
實作輸出效果
frameworks/av/media/libeffects
下方提供輸出效果的參考實作項目。
合作夥伴如要實作自訂輸出效果,應針對 Android 10 版本採取以下做法:
- 更新輸出效果,以支援多管道浮點格式:
- 不再需要 Int16 處理支援。
- 支援 2 到 8 個輸出頻道數量 (如果要考量日後的相容性,請考慮 1 到 30 個的數量)。
- 支援插入效果的輸入頻道數量與輸出頻道數量相符。輔助效果會繼續看到輸入音訊通道數量為 1 (單聲道)。
- 支援
(1 << n) - 1
的頻道位置遮罩 (標準) 和頻道索引遮罩。
- 如果您必須繼續支援舊版供應商輸出效果,且無法更新,請按照下列步驟驗證舊版程式碼:
- 舊版輸出 (插入) 效果必須拒絕
EFFECT_CMD_SET_CONFIG
中不支援的設定。- 確認格式為 int16。
- 確認輸入和輸出頻道遮罩為立體聲。
- 如果任一檢查失敗,請傳回
-EINVAL
。
- 舊版輸出 (輔助) 效果會由 AudioFlinger 設定,並使用單聲道輸入頻道遮罩和可能的多聲道輸出頻道遮罩,這取決於輸出匯流器是否為多聲道。這些函式必須拒絕
EFFECT_CMD_SET_CONFIG
中不支援的設定。- 確認格式為 int16。
- 請確認輸入頻道遮罩為單聲道,而輸出頻道遮罩為立體聲。
- 如果任一檢查失敗,請傳回
-EINVAL
。
- 驗證舊版程式碼。請勿假設這項功能會正常運作!
- 舊版輸出 (插入) 效果必須拒絕