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,造成精確度下降。
- 輸出效果在頻道數量大於 2 的輸出接收器中遭到拒絕。
在 Android 9 版本中,效果鏈處理管道已升級,以便支援多管道浮點格式。重點:
- Android 軟體效果已經遷移至立體聲浮點。
- 舊版效果支援格式轉換器,可視需要將 float 轉換為 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
。
- 驗證舊版代碼。請勿假設這項功能會正常運作!
- 舊版輸出 (插入) 效果必須拒絕