Konversi tingkat sampel

Artikel ini menjelaskan konversi laju sampel, yang juga dikenal sebagai pengambilan sampel ulang , di 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. Pengonversi laju sampel, atau resampler, adalah modul yang mengimplementasikan 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 mungkin dikodekan pada kecepatan sampel 44,1 kHz namun 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 dengan menggunakan metrik, antara lain:

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

Resampler yang ideal akan mempertahankan amplitudo dan bandwidth frekuensi sinyal sumber (sesuai dengan batasan laju sampel sink), memiliki penundaan yang minimal dan konsisten, memiliki kompleksitas komputasi yang minimal, memungkinkan rasio konversi yang sewenang-wenang dan dinamis, dan mendukung semua format sampel audio digital yang umum. . Dalam praktiknya, pengambilan sampel ulang yang ideal tidak ada karena pengambilan sampel ulang sebenarnya merupakan kompromi di antara karakteristik tersebut. Misalnya, sasaran kualitas ideal bertentangan dengan penundaan singkat dan kompleksitas rendah.

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

Implementasi pengambilan sampel ulang

Implementasi resampler yang tersedia sering berubah dan dapat disesuaikan oleh OEM. Pengambil sampel ulang default, dalam urutan distorsi sinyal menurun dan kompleksitas komputasi, meliputi:

  • linier
  • kubik
  • sin dengan koefisien asli
  • sejak dengan koefisien yang direvisi

Secara umum, resampler karena lebih sesuai untuk pemutaran musik dengan kualitas lebih tinggi, dan resampler lainnya harus digunakan 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 .