Artikel ini menjelaskan konversi rasio sampel, juga dikenal sebagai pengambilan sampel ulang , dalam Android. Untuk terminologi yang terkait dengan konversi laju sampel, lihat Terminologi .
Konversi laju sampel adalah proses mengubah aliran sampel diskrit dari satu laju sampel ke aliran lain pada laju sampel yang berbeda. Konverter laju sampel, atau resampler, adalah modul yang mengimplementasikan konversi laju sampel. Sehubungan dengan resampler, aliran asli disebut sinyal sumber, dan aliran resampled disebut sinyal sink.
Resampler digunakan di beberapa tempat di Android. Misalnya, file MP3 mungkin dikodekan pada laju sampel 44,1 kHz tetapi perlu diputar ulang di perangkat Android yang mendukung audio 48 kHz secara internal. Dalam hal ini, resampler akan digunakan untuk meningkatkan sampel audio keluaran MP3 dari laju sampel sumber 44,1 kHz ke laju sampel sink 48 kHz yang digunakan dalam perangkat Android.
Karakteristik resampler dapat dinyatakan menggunakan metrik, termasuk:
- tingkat pelestarian amplitudo keseluruhan sinyal
- tingkat pelestarian bandwidth frekuensi sinyal, tunduk pada batasan laju sampel sink
- latensi keseluruhan melalui resampler
- fase konsisten dan keterlambatan kelompok sehubungan dengan frekuensi
- kompleksitas komputasi, dinyatakan dalam siklus CPU atau penarikan daya
- rasio tingkat sampel sumber dan wastafel yang diizinkan
- kemampuan untuk mengubah rasio laju sampel secara dinamis
- format sampel audio digital mana yang didukung
Resampler yang ideal akan secara tepat mempertahankan amplitudo sinyal sumber dan bandwidth frekuensi (tergantung pada batasan laju sampel sink), memiliki penundaan minimal dan konsisten, memiliki kompleksitas komputasi minimal, mengizinkan rasio konversi sewenang-wenang dan dinamis, dan mendukung semua format sampel audio digital umum. . Dalam praktiknya, sampel ulang yang ideal tidak ada karena sampel ulang yang sebenarnya merupakan kompromi di antara karakteristik ini. Misalnya, tujuan konflik kualitas ideal dengan penundaan singkat dan kompleksitas rendah.
Android menyertakan berbagai resampler audio, sehingga kompromi yang tepat dapat dilakukan tergantung pada kasus penggunaan dan beban aplikasi. Resampler yang tersedia dijelaskan dalam implementasi Resampler.
Implementasi sampel ulang
Implementasi resampler yang tersedia sering berubah, dan dapat disesuaikan oleh OEM. Resampler default, dalam urutan menurun dari distorsi sinyal dan urutan menaik dari kompleksitas komputasi, meliputi:
- linier
- kubik
- sinc dengan koefisien asli
- sinc dengan koefisien yang direvisi
Secara umum, resampler sinc lebih sesuai untuk pemutaran musik berkualitas lebih tinggi, dan resampler lainnya harus disediakan untuk kasus di mana kualitas kurang penting (contohnya mungkin "klik tombol" atau serupa).
Implementasi resampler spesifik yang dipilih bergantung pada kasus penggunaan, beban, dan nilai properti sistem af.resampler.quality
. Untuk detailnya, lihat kode sumber resampler audio di AudioFlinger .