高解析度音訊

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