Konversi frekuensi sampel

Artikel ini menjelaskan konversi frekuensi sampel, yang juga dikenal sebagai resampling, dalam Android. Untuk terminologi yang terkait dengan konversi frekuensi sampel, lihat Terminologi.

Konversi frekuensi sampel adalah proses mengubah aliran sampel diskret dari satu frekuensi sampel ke aliran lain dengan frekuensi sampel yang berbeda. Pengonversi frekuensi sampel, atau resampler, adalah modul yang mengimplementasikan konversi frekuensi sampel. Sehubungan dengan resampler, streaming asli disebut sinyal sumber, dan streaming yang di-resample disebut sinyal sink.

Resampler digunakan di beberapa tempat di Android. Misalnya, file MP3 dapat dienkode pada frekuensi sampel 44,1 kHz, tetapi perlu diputar di perangkat Android yang mendukung audio 48 kHz secara internal. Dalam hal ini, resampler akan digunakan untuk menaikkan sampel audio output MP3 dari frekuensi sampel sumber 44,1 kHz ke frekuensi sampel sink 48 kHz yang digunakan dalam perangkat Android.

Karakteristik resampler dapat dinyatakan menggunakan metrik, termasuk:

  • tingkat pelestarian amplitudo sinyal secara keseluruhan
  • tingkat pelestarian bandwidth frekuensi sinyal, tunduk pada batasan frekuensi sampel sink
  • latensi keseluruhan melalui resampler
  • fase dan penundaan grup yang konsisten sehubungan dengan frekuensi
  • kompleksitas komputasi, yang dinyatakan dalam siklus CPU atau daya yang digunakan
  • rasio frekuensi sampel sumber dan sink yang diizinkan
  • kemampuan untuk mengubah rasio frekuensi sampel secara dinamis
  • format sampel audio digital yang didukung

Resampler yang ideal akan mempertahankan amplitudo dan bandwidth frekuensi sinyal sumber secara tepat (tunduk pada batasan frekuensi sampling sink), memiliki penundaan yang minimal dan konsisten, memiliki kompleksitas komputasi yang minimal, mengizinkan rasio konversi arbitrer dan dinamis, dan mendukung semua format sampel audio digital umum. Dalam praktiknya, resampler ideal tidak ada karena resampler sebenarnya adalah kompromi di antara karakteristik ini. Misalnya, sasaran kualitas ideal bertentangan dengan penundaan singkat dan kompleksitas rendah.

Android menyertakan berbagai resampler audio, sehingga kompromi yang sesuai dapat dilakukan bergantung pada kasus penggunaan dan beban aplikasi. Resampler yang tersedia dijelaskan dalam Penerapan resampler.

Implementasi resampler

Implementasi resampler yang tersedia sering berubah, dan dapat disesuaikan oleh OEM. Resampler default, dalam urutan menurun distorsi sinyal dan urutan menaik 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 dicadangkan untuk kasus saat kualitas kurang penting (contohnya mungkin "klik tombol" atau yang serupa).

Implementasi resampler tertentu yang dipilih bergantung pada kasus penggunaan, beban, dan nilai properti sistem af.resampler.quality. Untuk mengetahui detailnya, lihat kode sumber resampler audio di AudioFlinger.