Rilis Android 10 menyertakan peningkatan berikut untuk audio resolusi tinggi:
- Float: Codec dan ekstraktor WAV, FLAC diupdate 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 diupdate untuk mendukung 192 kHz. Efek yang disediakan Android secara 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.
- Pengaturan Waktu: Informasi pengaturan waktu disertakan di seluruh framework audio.
Mulai Android 9, peningkatan berikut tidak memerlukan penerapan partner:
- Jumlah trek 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 lebih banyak trek audio beresolusi tinggi secara bersamaan.
- Jumlah total trek campuran meningkat dari 32 menjadi 256 untuk mencegah perebutan 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 sampel int16 stereo. Hal ini memiliki beberapa batasan:
- Semua efek output memaksa konversi dari data audio floating point ke int16, sehingga menyebabkan hilangnya presisi.
- Efek output ditolak dari sink output dengan jumlah channel lebih dari dua.
Pada rilis Android 9, pipeline pemrosesan rantai efek diupgrade untuk mendukung format float multi-saluran. Poin utama:
- Efek software Android sudah dimigrasikan ke float stereo.
- Efek lama didukung dengan adaptor format, yang mengonversi float ke 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 multi-saluran:
- 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 (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 multi-saluran, bergantung pada apakah sink output bersifat multi-saluran.
Mereka 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 fitur ini berfungsi.
- Efek output (penyisipan) lama harus menolak
konfigurasi yang tidak didukung di