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

Mengukur Latensi Audio

Halaman ini menjelaskan metode umum untuk mengukur latensi masukan dan keluaran.

Mengukur Latensi Output

Ada beberapa teknik yang tersedia untuk mengukur latensi keluaran, dengan berbagai tingkat akurasi dan kemudahan pengoperasian, yang dijelaskan di bawah ini. Juga lihat sirkuit Pengujian untuk contoh lingkungan pengujian.

Tes LED dan osiloskop

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

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

  • Gunakan pin Input / Output Tujuan Umum (GPIO) untuk tujuan yang sama.
  • Gunakan JTAG atau port debugging lainnya.
  • Gunakan lampu latar layar. Ini mungkin berisiko karena lampu latar mungkin memiliki latensi yang tidak dapat diabaikan, dan dapat menyebabkan pembacaan latensi yang tidak akurat.

Untuk melakukan tes ini:

  1. Jalankan aplikasi yang secara berkala menggerakkan LED pada saat yang sama mengeluarkan audio.

    Catatan: Untuk mendapatkan hasil yang berguna, sangat penting untuk menggunakan API yang benar dalam aplikasi pengujian sehingga Anda melatih jalur keluaran audio yang cepat. Lihat Desain Untuk Latensi yang Dikurangi untuk latar belakang.

  2. Tempatkan sensor cahaya di sebelah LED.
  3. Hubungkan probe osiloskop saluran ganda ke soket headphone berkabel (keluaran saluran) dan sensor cahaya.
  4. Gunakan osiloskop untuk mengukur perbedaan waktu antara mengamati sinyal keluaran garis versus sinyal sensor cahaya.

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

Mengukur Latensi Pulang Pergi

Latensi bolak -balik adalah jumlah dari latensi keluaran dan latensi masukan.

Tes Larsen

Salah satu tes latensi termudah adalah tes umpan balik audio (efek Larsen). Ini memberikan ukuran kasar dari output gabungan dan latensi input dengan mengatur waktu loop respons impuls. Pengujian ini tidak terlalu berguna untuk analisis terperinci karena sifat pengujiannya sendiri, tetapi dapat berguna untuk mengkalibrasi pengujian lain, dan untuk menetapkan batas atas.

Metode ini tidak memecah waktu komponen, yang penting jika latensi keluaran dan latensi masukan tidak bergantung. Jadi, metode ini tidak disarankan untuk mengukur latensi keluaran yang tepat atau nilai latensi masukan secara terpisah, tetapi mungkin berguna untuk membuat perkiraan kasar.

Latensi keluaran ke speaker di perangkat bisa jauh lebih besar daripada latensi keluaran ke konektor headset. Ini karena koreksi dan perlindungan speaker.

Untuk melakukan tes ini:

  1. Jalankan aplikasi yang menangkap audio dari mikrofon dan segera memutar kembali data yang diambil melalui speaker.
  2. Menciptakan suara secara eksternal, seperti mengetuk pensil di dekat mikrofon. Kebisingan ini menghasilkan putaran umpan balik. Sebagai alternatif, seseorang dapat menyuntikkan impuls ke dalam loop menggunakan perangkat lunak.
  3. Ukur waktu antara pulsa umpan balik untuk mendapatkan jumlah latensi keluaran, latensi masukan, dan overhead aplikasi.

Berikut beberapa sumber daya untuk mendapatkan aplikasi untuk tes Larsen:

Audio Loopback Dongle

Dongle loopback audio Dr. Rick O'Rang berguna untuk mengukur latensi bolak -balik melalui konektor headset. Gambar di bawah ini menunjukkan hasil dari menginjeksikan impuls ke loop satu kali, dan kemudian membiarkan loop umpan balik berosilasi. Periode osilasi adalah latensi bolak-balik. Perangkat tertentu, rilis perangkat lunak, dan kondisi pengujian tidak ditentukan di sini. Hasil yang ditampilkan tidak boleh diekstrapolasi.

pengukuran bolak-balik

Gambar 1. Pengukuran pulang pergi

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

Mengukur Latensi Input

Latensi masukan lebih sulit diukur daripada latensi keluaran. Tes berikut mungkin bisa membantu.

Salah satu pendekatannya adalah dengan terlebih dahulu menentukan keluaran latency menggunakan metode LED dan osiloskop kemudian menggunakan uji audio feedback (Larsen) untuk menentukan jumlah latensi keluaran dan latensi masukan. Perbedaan antara kedua pengukuran ini adalah latensi masukan.

Teknik lain adalah dengan menggunakan pin GPIO pada perangkat prototipe. Secara eksternal, denyut input GPIO pada saat yang sama saat Anda menampilkan sinyal audio ke perangkat. Jalankan aplikasi yang membandingkan perbedaan waktu kedatangan sinyal GPIO dan data audio.

Mengurangi Latensi

Untuk mencapai latensi audio yang rendah, berikan perhatian khusus di seluruh sistem pada penjadwalan, penanganan interupsi, manajemen daya, dan desain driver perangkat. Tujuan Anda adalah untuk mencegah bagian mana pun dari platform memblokir SCHED_FIFO audio SCHED_FIFO selama lebih dari beberapa milidetik. Dengan mengadopsi pendekatan sistematis seperti itu, Anda dapat mengurangi latensi audio dan mendapatkan manfaat tambahan dari kinerja yang lebih dapat diprediksi secara keseluruhan.

Penurunan audio, ketika terjadi, seringkali hanya dapat dideteksi dalam kondisi tertentu atau hanya pada transisi. Coba tekankan sistem dengan meluncurkan aplikasi baru dan gulir cepat melalui berbagai tampilan. Namun ketahuilah bahwa beberapa kondisi pengujian sangat membebani sehingga melampaui tujuan desain. Misalnya, mengambil laporan bug memberikan beban yang sangat besar pada sistem sehingga mungkin dapat diterima untuk memiliki kekurangan dalam kasus itu.

Saat menguji underruns:

  • Konfigurasikan DSP apa pun setelah prosesor aplikasi sehingga menambahkan latensi minimal.
  • Jalankan pengujian dalam kondisi berbeda seperti layar hidup atau mati, USB dicolokkan atau dicabut, WiFi hidup atau mati, Bluetooth hidup atau mati, dan telepon dan radio data hidup atau mati.
  • Pilih musik yang relatif tenang yang sangat Anda kenal, dan yang mudah didengar.
  • Gunakan headphone berkabel untuk sensitivitas ekstra.
  • Istirahatkan diri Anda agar tidak mengalami "kelelahan telinga".

Setelah Anda menemukan penyebab underruns, kurangi jumlah dan ukuran buffer untuk memanfaatkan ini. Pendekatan yang bersemangat untuk mengurangi jumlah dan ukuran buffer sebelum menganalisis underruns dan memperbaiki penyebab underruns hanya menghasilkan frustrasi.

Alat

systrace adalah alat systrace guna yang sangat baik untuk mendiagnosis gangguan kinerja tingkat sistem.

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