Audio resolusi tinggi

Rilis Android 10 mencakup peningkatan berikut untuk audio resolusi tinggi:

  • Float: Codec WAV, FLAC, dan ekstraktor diperbarui untuk mendukung float (presisi lossless 24+ bit). Efek Downmix dan Virtualizer diperbarui menjadi mengambang. Presisi yang diperbarui diizinkan oleh MediaPlayer (NuPlayer).
  • Frekuensi tinggi: codec WAV, FLAC, dan ekstraktor diperbarui untuk mendukung 192 kHz. Efek default yang disediakan Android diuji untuk dukungan 192 kHz pada frekuensi standar. Frekuensi standar yang diizinkan adalah 88,2 kHz, 96 kHz, 176,4 kHz, dan 192 kHz.
  • Multisaluran: Efek pemutaran Android default diuji untuk dukungan multisaluran hingga delapan saluran.
  • Pengaturan waktu: Informasi pengaturan waktu disertakan di seluruh kerangka audio.

Mulai Android 9, penyempurnaan berikut tidak memerlukan penerapan partner apa pun:

  • Jumlah track keluaran klien secara bersamaan meningkat dari 14 menjadi 40, karena instance klien AudioTrack yang terbatas telah menjadi masalah bagi aplikasi di Android 8.x.
  • Memori klien/server maksimum ditingkatkan dari 4 MB menjadi 32 MB (tergantung pada total memori perangkat) untuk memungkinkan lebih banyak trek audio resolusi tinggi secara simultan.
  • Total track campuran meningkat dari 32 menjadi 256 untuk mencegah pertikaian sumber daya antara aplikasi dan UI Sistem.

Efek keluaran berubah

Lihat Efek audio untuk perubahan rilis Android 11.

Sebelum rilis Android 9, pemrosesan rantai efek diimplementasikan dalam format sampel stereo int16. Hal ini mempunyai beberapa keterbatasan:

  • Semua efek keluaran memaksa konversi dari data audio floating point ke int16, menyebabkan hilangnya presisi.
  • Efek keluaran ditolak dari penyerap keluaran dengan jumlah saluran lebih dari dua.

Dalam rilis Android 9, pipeline pemrosesan rantai efek ditingkatkan untuk mendukung format float multisaluran. Poin-poin penting:

  • Efek perangkat lunak Android sudah dimigrasikan ke stereo float.
  • Efek lama didukung dengan adaptor format, yang mengonversi float ke int16 sesuai kebutuhan.

Menerapkan efek keluaran

Implementasi referensi untuk efek keluaran tersedia di frameworks/av/media/libeffects .

Mitra yang menerapkan efek keluaran khusus mereka sendiri harus melakukan hal berikut untuk rilis Android 10:

  • Perbarui efek keluaran untuk mendukung format float multisaluran:
    • Dukungan pemrosesan Int16 tidak lagi diperlukan.
    • Mendukung jumlah saluran keluaran dari 2–8 (untuk kompatibilitas di masa mendatang, pertimbangkan jumlah dari 1–30).
    • Mendukung jumlah saluran masukan yang cocok dengan jumlah saluran keluaran untuk efek penyisipan. Efek tambahan terus melihat jumlah saluran input 1 (mono).
    • Mendukung masker posisi saluran (kanonik) dan masker indeks saluran (1 << n) - 1 .
  • Jika Anda harus terus mendukung efek keluaran vendor lama dan tidak dapat memperbaruinya, verifikasi kode lama sebagai berikut:
    • Efek keluaran (masukkan) lama harus menolak konfigurasi yang tidak didukung di EFFECT_CMD_SET_CONFIG .
      • Periksa apakah formatnya int16.
      • Periksa apakah masker saluran input dan output stereo.
      • Jika salah satu pemeriksaan gagal, kembalikan -EINVAL .
    • Efek keluaran lama (tambahan) dikonfigurasikan oleh AudioFlinger dengan topeng saluran masukan mono dan kemungkinan masker saluran keluaran multisaluran, bergantung pada apakah sink keluarannya multisaluran. Mereka harus menolak konfigurasi yang tidak didukung di EFFECT_CMD_SET_CONFIG .
      • Periksa apakah formatnya int16.
      • Periksa apakah masker saluran masukan adalah mono dan masker saluran keluaran adalah stereo.
      • Jika salah satu pemeriksaan gagal, kembalikan -EINVAL .
    • Verifikasi kode lama. Jangan berasumsi bahwa itu berhasil!