高解析度音訊

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
    • 驗證舊版代碼。請勿假設這項功能會正常運作!