Mengukur latensi audio

Halaman ini menjelaskan metode umum untuk mengukur latensi input dan output.

Mengukur latensi output

Ada beberapa teknik yang tersedia untuk mengukur latensi output, dengan tingkat akurasi dan kemudahan pengoperasian yang bervariasi, yang dijelaskan di bawah. Lihat juga Sirkuit pengujian untuk contoh lingkungan pengujian.

Pengujian LED dan osiloskop

Pengujian ini mengukur latensi sehubungan dengan indikator LED perangkat. Jika perangkat produksi tidak memiliki LED, Anda dapat menginstal LED pada perangkat faktor bentuk prototipe. Untuk akurasi yang lebih baik pada perangkat prototipe dengan sirkuit yang terbuka, hubungkan satu probe osiloskop ke LED secara langsung untuk mengabaikan latensi sensor cahaya.

Jika Anda tidak dapat menginstal LED pada perangkat produksi atau prototipe, coba solusi berikut:

  • Gunakan pin Input/Output Tujuan Umum (GPIO) untuk tujuan yang sama.
  • Gunakan JTAG atau port proses debug lainnya.
  • Gunakan lampu latar layar. Hal ini mungkin berisiko karena lampu latar dapat memiliki latensi yang tidak dapat diabaikan, dan dapat berkontribusi pada pembacaan latensi yang tidak akurat.

Untuk melakukan pengujian ini:

  1. Jalankan aplikasi yang secara berkala memicu LED saat menghasilkan output audio.

    Catatan: Untuk mendapatkan hasil yang berguna, Anda harus menggunakan API yang benar di aplikasi pengujian sehingga Anda menggunakan jalur output audio yang cepat. Lihat Mendesain untuk mengurangi latensi untuk latar belakang.

  2. Tempatkan sensor cahaya di samping LED.
  3. Hubungkan probe osiloskop dua saluran ke jack headphone berkabel (output saluran) dan sensor cahaya.
  4. Gunakan osiloskop untuk mengukur perbedaan waktu antara mengamati sinyal output garis versus sinyal sensor cahaya.

Perbedaan waktu adalah perkiraan latensi output audio, dengan asumsi bahwa latensi LED dan latensi sensor cahaya sama dengan nol. Biasanya, LED dan sensor cahaya masing-masing memiliki latensi yang relatif rendah sekitar satu milidetik atau kurang, yang cukup rendah untuk diabaikan.

Mengukur latensi bolak-balik

Latensi bolak-balik adalah jumlah dari latensi output dan latensi input.

Tes Larsen

Salah satu pengujian latensi yang paling mudah adalah pengujian feedback audio (efek Larsen). Hal ini memberikan pengukuran kasar latensi output dan input gabungan dengan mengatur waktu loop respons impuls. Pengujian ini tidak terlalu berguna untuk analisis mendetail karena sifat pengujiannya, tetapi dapat berguna untuk mengkalibrasi pengujian lain, dan untuk menetapkan batas atas.

Metode ini tidak mengelompokkan waktu komponen, yang penting jika latensi output dan latensi input bersifat independen. Jadi, metode ini tidak direkomendasikan untuk mengukur nilai latensi output atau latensi input yang akurat secara terpisah, tetapi mungkin berguna untuk membuat estimasi kasar.

Latensi output ke speaker di perangkat dapat jauh lebih besar daripada latensi output ke konektor headset. Hal ini disebabkan oleh koreksi dan perlindungan speaker.

Untuk melakukan pengujian ini:

  1. Jalankan aplikasi yang merekam audio dari mikrofon dan segera memutar data yang direkam melalui speaker.
  2. Buat suara secara eksternal, seperti mengetuk pensil di dekat mikrofon. Derau ini menghasilkan loop masukan. Atau, Anda dapat memasukkan impuls ke dalam loop menggunakan software.
  3. Ukur waktu antara pulsa masukan untuk mendapatkan jumlah latensi output, latensi input, dan overhead aplikasi.

Berikut beberapa referensi untuk mendapatkan aplikasi pengujian Larsen:

Dongle loopback audio

Dr. Rick O'Rang audio loopback dongle berguna untuk mengukur latensi bolak-balik melalui konektor headset. Gambar di bawah menunjukkan hasil memasukkan impuls ke dalam loop satu kali, lalu memungkinkan loop masukan beroskilasi. Periode osilasi adalah latensi bolak-balik. Perangkat, rilis software, dan kondisi pengujian tertentu tidak ditentukan di sini. Hasil yang ditampilkan tidak boleh diekstrapolasi.

pengukuran round-trip

Gambar 1. Pengukuran round-trip

Anda mungkin perlu melepas kabel USB untuk mengurangi derau, dan menyesuaikan level volume untuk mendapatkan osilasi yang stabil.

Mengukur latensi input

Latensi input lebih sulit diukur daripada latensi output. Pengujian berikut mungkin dapat membantu.

Salah satu pendekatannya adalah dengan menentukan latensi output terlebih dahulu menggunakan metode LED dan osiloskop, lalu menggunakan pengujian masukan audio (Larsen) untuk menentukan jumlah latensi output dan latensi input. Perbedaan antara kedua pengukuran ini adalah latensi input.

Teknik lainnya adalah menggunakan pin GPIO pada perangkat prototipe. Secara eksternal, berikan pulsa input GPIO pada saat Anda memberikan sinyal audio ke perangkat. Jalankan aplikasi yang membandingkan perbedaan waktu kedatangan sinyal GPIO dan data audio.

Mengurangi latensi

Untuk mencapai latensi audio yang rendah, perhatikan dengan cermat seluruh sistem untuk penjadwalan, penanganan interupsi, pengelolaan daya, dan desain driver perangkat. Tujuan Anda adalah mencegah bagian platform apa pun memblokir thread audio SCHED_FIFO selama lebih dari beberapa milidetik. Dengan mengadopsi pendekatan sistematis tersebut, Anda dapat mengurangi latensi audio dan mendapatkan manfaat sampingan berupa performa yang lebih dapat diprediksi secara keseluruhan.

Jika terjadi, underrun audio sering kali hanya dapat dideteksi dalam kondisi tertentu atau hanya pada transisi. Coba tekan sistem dengan meluncurkan aplikasi baru dan men-scroll dengan cepat di berbagai layar. Namun, perlu diperhatikan bahwa beberapa kondisi pengujian sangat berat sehingga melampaui tujuan desain. Misalnya, mengambil bugreport akan memberikan beban yang sangat besar pada sistem sehingga dalam kasus tersebut, underrun mungkin dapat diterima.

Saat menguji underrun:

  • Konfigurasikan DSP apa pun setelah prosesor aplikasi sehingga menambahkan latensi minimum.
  • Jalankan pengujian dalam berbagai kondisi seperti layar aktif atau nonaktif, USB dicolokkan atau dicabut, Wi-Fi aktif atau nonaktif, Bluetooth aktif atau nonaktif, dan radio telepon dan data aktif atau nonaktif.
  • Pilih musik yang relatif tenang dan sangat Anda kenal, serta mudah untuk mendengar underrun.
  • Gunakan headphone berkabel untuk sensitivitas ekstra.
  • Beristirahatlah agar Anda tidak mengalami "kelelahan telinga".

Setelah Anda menemukan penyebab utama underrun, kurangi jumlah dan ukuran buffer untuk memanfaatkannya. Pendekatan yang terlalu cepat untuk mengurangi jumlah dan ukuran buffer sebelum menganalisis underrun dan memperbaiki penyebab underrun hanya akan membuat frustrasi.

Alat

systrace adalah alat serbaguna yang sangat baik untuk mendiagnosis gangguan performa tingkat sistem.

Output dumpsys media.audio_flinger juga berisi bagian yang berguna yang disebut "statistik bergerak sederhana". File ini berisi ringkasan variabilitas waktu yang berlalu untuk setiap siklus I/O dan campuran audio. Idealnya, semua pengukuran waktu harus kira-kira sama dengan waktu siklus nominal atau rata-rata. Jika Anda melihat minimum yang sangat rendah atau maksimum yang tinggi, ini adalah indikasi masalah, kemungkinan latensi penjadwalan yang tinggi atau waktu penonaktifan gangguan. Bagian ekor output sangat membantu, karena menyoroti variabilitas di luar +/- 3 deviasi standar.