Messung der Audiolatenz

Auf dieser Seite werden gängige Methoden zum Messen der Eingangs- und Ausgangslatenz beschrieben.

Messung der Ausgangslatenz

Es stehen mehrere Techniken zur Verfügung, um die Ausgangslatenz mit unterschiedlicher Genauigkeit und einfacher Ausführung zu messen, die unten beschrieben werden. Siehe auch die Testschaltung für eine beispielhafte Testumgebung.

LED- und Oszilloskoptest

Dieser Test misst die Latenz im Verhältnis zur LED-Anzeige des Geräts. Wenn Ihr Produktionsgerät keine LED hat, können Sie die LED auf einem Formfaktor-Prototypgerät installieren. Für eine noch bessere Genauigkeit bei Prototypen mit freiliegenden Schaltkreisen schließen Sie einen Oszilloskop-Tastkopf direkt an die LED an, um die Latenz des Lichtsensors zu umgehen.

Wenn Sie weder auf Ihrem Produktions- noch auf Ihrem Prototypgerät eine LED installieren können, versuchen Sie die folgenden Problemumgehungen:

  • Verwenden Sie für den gleichen Zweck einen General Purpose Input/Output (GPIO) Pin.
  • Verwenden Sie JTAG oder einen anderen Debugging-Port.
  • Verwenden Sie die Hintergrundbeleuchtung des Bildschirms. Dies kann riskant sein, da die Hintergrundbeleuchtung eine nicht vernachlässigbare Latenz haben kann und zu einer ungenauen Latenzmessung beitragen kann.

So führen Sie diesen Test durch:

  1. Führen Sie eine App aus, die die LED regelmäßig pulsiert, während sie Audio ausgibt.

    Hinweis: Um nützliche Ergebnisse zu erhalten, ist es entscheidend, die richtigen APIs in der Test-App zu verwenden, damit Sie den schnellen Audioausgabepfad nutzen. Siehe Design für reduzierte Latenz für den Hintergrund.

  2. Platzieren Sie einen Lichtsensor neben der LED.
  3. Schließen Sie die Tastköpfe eines Zweikanal-Oszilloskops sowohl an die kabelgebundene Kopfhörerbuchse (Line-Ausgang) als auch an den Lichtsensor an.
  4. Verwenden Sie das Oszilloskop, um die Zeitdifferenz zwischen der Beobachtung des Line-Ausgangssignals und dem Lichtsensorsignal zu messen.

Der Zeitunterschied ist die ungefähre Audioausgangslatenz unter der Annahme, dass die LED-Latenz und die Lichtsensorlatenz beide Null sind. Typischerweise haben die LED und der Lichtsensor jeweils eine relativ niedrige Latenz in der Größenordnung von einer Millisekunde oder weniger, was ausreichend niedrig genug ist, um ignoriert zu werden.

Round-Trip-Latenz messen

Die Roundtrip-Latenz ist die Summe aus Ausgangslatenz und Eingangslatenz.

Larsen-Test

Einer der einfachsten Latenztests ist ein Audio-Feedback-Test (Larsen-Effekt). Dies liefert ein grobes Maß für die kombinierte Ausgangs- und Eingangslatenz durch das Timing einer Impulsantwortschleife. Dieser Test ist aufgrund der Art des Tests nicht sehr nützlich für eine detaillierte Analyse an sich, aber er kann nützlich sein, um andere Tests zu kalibrieren und eine Obergrenze festzulegen.

Dieses Verfahren zerlegt die Komponentenzeiten nicht, was wichtig ist, wenn die Ausgangslatenz und die Eingangslatenz unabhängig sind. Daher wird diese Methode nicht empfohlen, um genaue Ausgangslatenz- oder Eingangslatenzwerte isoliert zu messen, kann aber nützlich sein, um grobe Schätzungen zu erstellen.

Die Ausgangslatenz zum Lautsprecher auf dem Gerät kann erheblich größer sein als die Ausgangslatenz zum Headset-Anschluss. Dies liegt an der Lautsprecherkorrektur und dem Schutz.

So führen Sie diesen Test durch:

  1. Führen Sie eine App aus, die Audio vom Mikrofon aufnimmt und die erfassten Daten sofort über den Lautsprecher wiedergibt.
  2. Erzeuge extern einen Ton, z. B. indem du mit einem Bleistift auf das Mikrofon tippst. Dieses Rauschen erzeugt eine Rückkopplungsschleife. Alternativ kann man per Software einen Impuls in die Schleife einspeisen.
  3. Messen Sie die Zeit zwischen Feedback-Impulsen, um die Summe aus Ausgangslatenz, Eingangslatenz und Anwendungs-Overhead zu erhalten.

Hier sind einige Ressourcen, um eine App für den Larsen-Test zu erhalten:

Audio-Loopback-Dongle

Der Dr. Rick O'Rang Audio-Loopback-Dongle ist praktisch, um die Round-Trip-Latenz über den Headset-Anschluss zu messen. Das Bild unten zeigt das Ergebnis, wenn man einmal einen Impuls in die Schleife einspeist und dann die Rückkopplungsschleife oszillieren lässt. Die Periode der Oszillationen ist die Umlauflatenz. Das spezifische Gerät, die Softwareversion und die Testbedingungen werden hier nicht spezifiziert. Die gezeigten Ergebnisse sollten nicht extrapoliert werden.

Round-Trip-Messung

Abbildung 1. Round-Trip-Messung

Möglicherweise müssen Sie das USB-Kabel entfernen, um Rauschen zu reduzieren, und die Lautstärke anpassen, um eine stabile Oszillation zu erhalten.

Messung der Eingangslatenz

Die Eingangslatenz ist schwieriger zu messen als die Ausgangslatenz. Die folgenden Tests könnten helfen.

Ein Ansatz besteht darin, zuerst die Ausgangslatenz mit der LED- und Oszilloskopmethode zu bestimmen und dann den Audio-Feedback-Test (Larsen) zu verwenden, um die Summe aus Ausgangslatenz und Eingangslatenz zu bestimmen. Die Differenz zwischen diesen beiden Messungen ist die Eingangslatenz.

Eine andere Technik besteht darin, einen GPIO-Pin auf einem Prototypgerät zu verwenden. Pulsen Sie extern einen GPIO-Eingang, während Sie gleichzeitig ein Audiosignal an das Gerät senden. Führen Sie eine App aus, die die Differenz der Ankunftszeiten des GPIO-Signals und der Audiodaten vergleicht.

Reduzierung der Latenz

Um eine niedrige Audiolatenz zu erreichen, achten Sie im gesamten System besonders auf die Zeitplanung, die Unterbrechungsbehandlung, die Energieverwaltung und das Design der Gerätetreiber. Ihr Ziel ist es, zu verhindern, dass irgendein Teil der Plattform einen SCHED_FIFO -Audio-Thread länger als ein paar Millisekunden blockiert. Durch die Anwendung eines solchen systematischen Ansatzes können Sie die Audiolatenz reduzieren und den Nebeneffekt einer insgesamt besser vorhersehbaren Leistung erzielen.

Audio-Underruns sind, wenn sie auftreten, oft nur unter bestimmten Bedingungen oder nur an den Übergängen feststellbar. Versuchen Sie, das System zu belasten, indem Sie neue Apps starten und schnell durch verschiedene Anzeigen scrollen. Beachten Sie jedoch, dass einige Testbedingungen so belastend sind, dass sie die Designziele übersteigen. Beispielsweise belastet das Aufnehmen eines Fehlerberichts das System so enorm, dass es in diesem Fall akzeptabel sein kann, einen Underrun zu haben.

Beim Prüfen auf Unterlauf:

  • Konfigurieren Sie einen beliebigen DSP nach dem App-Prozessor, sodass er minimale Latenz hinzufügt.
  • Führen Sie Tests unter verschiedenen Bedingungen durch, z. B. mit ein- oder ausgeschaltetem Bildschirm, ein- oder ausgestecktem USB-Anschluss, ein- oder ausgeschaltetem WLAN, ein- oder ausgeschaltetem Bluetooth und ein- oder ausgeschaltetem Telefonie- und Datenfunk.
  • Wählen Sie relativ leise Musik, mit der Sie gut vertraut sind und bei der Unterläufe leicht zu hören sind.
  • Verwenden Sie kabelgebundene Kopfhörer für zusätzliche Empfindlichkeit.
  • Gönnen Sie sich Pausen, damit Sie keine „Ohrenermüdung“ erleben.

Sobald Sie die zugrunde liegenden Ursachen für Unterläufe gefunden haben, reduzieren Sie die Pufferanzahl und -größe, um dies zu nutzen. Der eifrige Ansatz, Pufferanzahl und -größe zu reduzieren, bevor Unterläufe analysiert und die Ursachen von Unterläufen behoben werden, führt nur zu Frustration.

Werkzeug

systrace ist ein hervorragendes Allzweck-Tool zur Diagnose von Leistungsstörungen auf Systemebene.

Die Ausgabe von dumpsys media.audio_flinger enthält auch einen nützlichen Abschnitt namens „Simple Moving Statistics“. Dies hat eine Zusammenfassung der Variabilität der verstrichenen Zeiten für jeden Audiomix und E/A-Zyklus. Idealerweise sollten alle Zeitmessungen ungefähr gleich der mittleren oder nominellen Zykluszeit sein. Wenn Sie ein sehr niedriges Minimum oder ein hohes Maximum sehen, ist dies ein Hinweis auf ein Problem, wahrscheinlich eine hohe Scheduling-Latenz oder Interrupt-Deaktivierungszeit. Der hintere Teil der Ausgabe ist besonders hilfreich, da er die Variabilität jenseits von +/- 3 Standardabweichungen hervorhebt.