Audio beresolusi tinggi

Rilis Android 10 menyertakan peningkatan berikut untuk audio beresolusi tinggi:

  • Float: codec WAV, FLAC, dan ekstraktor diupdate untuk mendukung float (presisi lossless 24+ bit). Efek Downmix dan Virtualizer diperbarui menjadi mengambang. Akurasi yang diperbarui diizinkan oleh MediaPlayer (NuPlayer).
  • Frekuensi tinggi: codec WAV, FLAC, dan ekstraktor diupdate 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 ke delapan saluran.
  • Waktu: Informasi waktu disertakan di seluruh framework audio.

Mulai Android 9, peningkatan berikut tidak memerlukan penerapan partner:

  • Jumlah jalur output klien serentak meningkat dari 14 menjadi 40, karena instance klien AudioTrack yang terbatas telah menjadi masalah bagi aplikasi di Android 8.x.
  • Memori klien/server maksimum meningkat dari 4 MB menjadi 32 MB (bergantung pada total memori perangkat) untuk memungkinkan trek audio beresolusi tinggi yang lebih simultan.
  • Total jalur campuran meningkat dari 32 menjadi 256 untuk mencegah pertentangan resource antara aplikasi dan UI Sistem.

Perubahan efek output

Lihat Efek audio untuk perubahan rilis Android 11.

Sebelum rilis Android 9, pemrosesan rantai efek diimplementasikan dalam format contoh int16 stereo. Hal ini memiliki beberapa batasan:

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

Dalam rilis Android 9, pipeline pemrosesan chain efek diupgrade untuk mendukung format float multisaluran. Poin utama:

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

Menerapkan efek output

Penerapan referensi untuk efek output tersedia di frameworks/av/media/libeffects.

Partner yang menerapkan efek output kustom mereka sendiri harus melakukan hal berikut untuk rilis Android 10:

  • Perbarui efek output untuk mendukung format float multisaluran:
    • Dukungan pemrosesan Int16 tidak lagi diperlukan.
    • Mendukung jumlah saluran output dari 2–8 (untuk kompatibilitas di masa mendatang, pertimbangkan jumlah dari 1–30).
    • Mendukung jumlah saluran input yang cocok dengan jumlah saluran output untuk efek penyisipan. Efek tambahan terus melihat jumlah saluran input 1 (mono).
    • Mendukung mask posisi saluran (kanonis) dan mask indeks saluran (1 << n) - 1.
  • Jika Anda harus terus mendukung efek output vendor lama dan tidak dapat mengupdatenya, verifikasi kode lama sebagai berikut:
    • Efek output (insert) lama harus menolak konfigurasi yang tidak didukung di EFFECT_CMD_SET_CONFIG.
      • Pastikan formatnya adalah int16.
      • Pastikan mask saluran input dan output adalah stereo.
      • Jika salah satu pemeriksaan gagal, tampilkan -EINVAL.
    • Efek output lama (tambahan) dikonfigurasi oleh AudioFlinger dengan mask saluran input mono dan mask saluran output yang berpotensi multisaluran, bergantung pada apakah sink output bersifat multisaluran. Fungsi ini harus menolak konfigurasi yang tidak didukung di EFFECT_CMD_SET_CONFIG.
      • Pastikan formatnya adalah int16.
      • Pastikan mask saluran input adalah mono dan mask saluran output adalah stereo.
      • Jika salah satu pemeriksaan gagal, tampilkan -EINVAL.
    • Verifikasi kode lama. Jangan berasumsi bahwa cara tersebut berhasil.