Mulai 27 Maret 2025, sebaiknya gunakan android-latest-release
, bukan aosp-main
, untuk mem-build dan berkontribusi pada AOSP. Untuk mengetahui informasi selengkapnya, lihat Perubahan pada AOSP.
Audio beresolusi tinggi
Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Rilis Android 10 menyertakan peningkatan
berikut untuk audio beresolusi tinggi:
- Float: Extractor, codec, dan WAV FLAC diupdate untuk mendukung float
(24+ bit presisi lossless). Efek Downmix dan Virtualizer diperbarui menjadi mengambang.
Akurasi yang diperbarui diizinkan oleh MediaPlayer (NuPlayer).
- Frekuensi tinggi: Extractor, codec, dan 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 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 lebih banyak trek audio
beresolusi tinggi secara bersamaan.
- 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 sampel 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 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
multisaluran yang berpotensi, 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
.
- Memverifikasi kode lama. Jangan berasumsi bahwa cara ini akan berhasil.
Konten dan contoh kode di halaman ini tunduk kepada lisensi yang dijelaskan dalam Lisensi Konten. Java dan OpenJDK adalah merek dagang atau merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2025-07-27 UTC.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Informasi yang saya butuhkan tidak ada","missingTheInformationINeed","thumb-down"],["Terlalu rumit/langkahnya terlalu banyak","tooComplicatedTooManySteps","thumb-down"],["Sudah usang","outOfDate","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Masalah kode / contoh","samplesCodeIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2025-07-27 UTC."],[],[],null,["# High-resolution audio\n\nThe Android 10 release includes the following\nimprovements for high-resolution audio:\n\n- **Float:** WAV, FLAC codecs, and extractors are updated to support float (24+ bits of lossless precision). Downmix and Virtualizer effects are updated to float. Updated precision is allowed by MediaPlayer (NuPlayer).\n- **High-frequency:** WAV, FLAC codecs, and extractors are updated to support 192 kHz. The default Android supplied effects are tested for 192 kHz support at standard frequencies. The standard frequencies permitted are 88.2 kHz, 96 kHz, 176.4 kHz, and 192 kHz.\n- **Multichannel:** Default Android playback effects are tested for multichannel support to eight channels.\n- **Timing:** Timing information is included throughout the audio framework.\n\nStarting in Android 9, the following improvements\ndon't require any partner implementation:\n\n- The number of simultaneous client output tracks increases from 14 to 40, as limited client instances of `AudioTrack` have been an issue for apps in Android 8.x.\n- Maximum client/server memory increases from 4 MB to 32 MB (depending on total device memory) to allow more simultaneous high-resolution audio tracks.\n- Total mixed tracks increases from 32 to 256 to prevent resource contention between apps and the System UI.\n\nOutput effect changes\n---------------------\n\nSee [Audio\neffects](/docs/core/audio/audio-effects) for Android 11 release changes.\n\nPrior to the Android 9 release, effect chain processing\nwas implemented in stereo int16 sample format. This had several limitations:\n\n- All output effects forced conversion from floating point audio data to int16, causing loss of precision.\n- Output effects were rejected from output sinks with a channel count greater than two.\n\nIn the Android 9 release, the effect chain processing\npipeline is upgraded to support the multichannel float format. Key points:\n\n- Android software effects are already migrated to stereo float.\n- Legacy effects are supported with format adapters, which convert float to int16 as needed.\n\nImplement output effects\n------------------------\n\nA reference implementation for output effects is available under\n`frameworks/av/media/libeffects`.\n\nPartners implementing their own custom output effects should do the\nfollowing for the Android 10 release:\n\n- Update output effects to support the multichannel float format:\n - Int16 processing support is no longer required.\n - Support output channel counts from 2--8 (for future compatibility consider counts from 1--30).\n - Support input channel counts matching output channel counts for insert effects. Auxiliary effects continue to see an input channel count of 1 (mono).\n - Support both channel position masks (canonical) and channel index masks of `(1 \u003c\u003c n) - 1`.\n- If you must continue to support legacy vendor output effects and can't update them, then verify legacy code as follows:\n - Legacy output (insert) effects **must reject** unsupported configurations in `EFFECT_CMD_SET_CONFIG`.\n - Check that the format is int16.\n - Check that the input and output channel masks are stereo.\n - If either check fails, return `-EINVAL`.\n - Legacy output (auxiliary) effects are configured by AudioFlinger with a mono input channel mask and potentially multichannel output channel masks, depending on whether the output sink is multichannel. They **must reject** unsupported configurations in `\n EFFECT_CMD_SET_CONFIG`.\n - Check that the format is int16.\n - Check that the input channel mask is mono and the output channel mask is stereo.\n - If either check fails, return `-EINVAL`.\n - Verify legacy code. Don't assume that it works!"]]