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 起,下列改善項目不需要合作夥伴實作:
- 同時用戶端輸出軌的數量從 14 個增加到 40 個,因為受限的
AudioTrack
用戶端執行個體一直是 Android 8.x 應用程式的問題。 - 用戶端/伺服器記憶體上限從 4 MB 增加至 32 MB (視裝置總記憶體而定),可同時播放更多高解析度音軌。
- 混合軌總數從 32 增加到 256,可避免應用程式和系統 UI 之間發生資源爭用。
輸出效果變化
如要瞭解 Android 11 版本的變更,請參閱「音效」。
在 Android 9 發布前,效果鏈處理作業是以立體聲 int16 樣本格式實作。這項做法有幾項限制:
- 所有輸出效果都會強制將浮點音訊資料轉換為 int16,導致精確度降低。
- 輸出效果遭輸出接收器拒絕,且頻道數大於 2。
在 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
。
- 驗證舊版代碼。請勿假設這項功能會正常運作!
- 舊版輸出 (插入) 效果必須拒絕