Audio Resolusi Tinggi

Rilis Android 10 mencakup peningkatan berikut untuk audio resolusi tinggi:

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

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

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

Perubahan efek keluaran

Lihat Efek Audio untuk perubahan rilis Android 11.

Sebelum rilis Android 9, pemrosesan rantai efek diimplementasikan dalam format sampel int16 stereo. Ini memiliki beberapa keterbatasan:

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

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

  • 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 bawah 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.
    • Dukung jumlah saluran keluaran dari 2–8 (untuk kompatibilitas di masa mendatang, pertimbangkan penghitungan dari 1–30).
    • Mendukung jumlah saluran masukan yang cocok dengan jumlah saluran keluaran untuk efek sisipan. Efek tambahan terus melihat jumlah saluran input 1 (mono).
    • Dukung masker posisi saluran (kanonik) dan masker indeks saluran (1 << n) - 1 .
  • Jika Anda harus terus mendukung efek keluaran vendor lawas dan tidak dapat memperbaruinya, verifikasi kode lawas sebagai berikut:
    • Efek keluaran lama (sisipkan) 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) dikonfigurasi oleh AudioFlinger dengan penutup saluran masukan mono dan penutup saluran keluaran berpotensi multisaluran, tergantung pada apakah keluaran sink adalah multisaluran. Mereka harus menolak konfigurasi yang tidak didukung di EFFECT_CMD_SET_CONFIG .
      • Periksa apakah formatnya int16.
      • Periksa apakah penutup saluran input adalah mono dan penutup saluran keluaran adalah stereo.
      • Jika salah satu pemeriksaan gagal, kembalikan -EINVAL .
    • Verifikasi kode warisan. Jangan berasumsi bahwa itu berhasil!