高解析度音訊

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