Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Konversi Rasio Sampel

Artikel ini menjelaskan konversi laju 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 menerapkan konversi laju sampel. Sehubungan dengan resampler, aliran asli disebut sinyal sumber, dan aliran yang disampel ulang disebut sinyal sink.

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

Karakteristik resampler dapat diekspresikan menggunakan metrik, termasuk:

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

Resampler yang ideal akan benar-benar mempertahankan amplitudo dan bandwidth frekuensi sinyal sumber (tunduk pada batasan laju sampel sink), memiliki penundaan minimal dan konsisten, memiliki kompleksitas komputasi minimal, mengizinkan rasio konversi yang berubah-ubah dan dinamis, dan mendukung semua format sampel audio digital yang umum . Dalam praktiknya, resampler yang ideal tidak ada karena resampler yang sebenarnya merupakan kompromi di antara karakteristik ini. Misalnya, tujuan 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 pemuatan aplikasi. Resampler yang tersedia dijelaskan dalam implementasi Resampler.

Penerapan resampler

Penerapan resampler yang tersedia sering berubah, dan dapat disesuaikan oleh OEM. Resampler default, dalam urutan 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 dipesan untuk kasus-kasus di mana kualitas kurang penting (contohnya mungkin "klik tombol" atau serupa).

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