Audio beresolusi tinggi

Rilis Android 10 mencakup peningkatan berikut untuk audio resolusi tinggi:

  • Float: Codec dan ekstraktor WAV, FLAC diperbarui untuk mendukung float (presisi lossless 24+ bit). Efek Downmix dan Virtualizer diperbarui ke float. Presisi yang diperbarui diizinkan oleh MediaPlayer (NuPlayer).
  • Frekuensi tinggi: Codec dan ekstraktor WAV, FLAC diperbarui untuk mendukung 192 kHz. Efek yang disediakan Android default 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.
  • Waktu: Informasi waktu disertakan di seluruh framework audio.

Mulai Android 9, peningkatan berikut tidak memerlukan penerapan partner:

  • Jumlah trek output klien serentak meningkat dari 14 ke 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 lebih banyak trek audio resolusi tinggi serentak.
  • Total trek 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 diterapkan dalam format sampel stereo int16. 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 rantai efek diupgrade untuk mendukung format float multisaluran. Poin-poin utama:

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

Menerapkan efek output

Penerapan referensi untuk efek output tersedia di bagian 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.
    • Dukung jumlah saluran output dari 2–8 (untuk kompatibilitas mendatang pertimbangkan jumlah dari 1–30).
    • Dukung jumlah saluran input yang cocok dengan jumlah saluran output untuk efek penyisipan. Efek tambahan terus melihat jumlah saluran input count of 1 (mono).
    • Dukung mask posisi saluran (kanonis) dan mask indeks saluran masker (1 << n) - 1.
  • Jika Anda harus terus mendukung efek output vendor lama dan tidak dapat memperbaruinya, verifikasi kode lama sebagai berikut:
    • Efek output (penyisipan) 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 (tambahan) lama dikonfigurasi oleh AudioFlinger dengan mask saluran input mono dan mask saluran output yang berpotensi multisaluran, bergantung pada apakah sink output multisaluran atau tidak. Efek tersebut 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 menganggapnya berfungsi.