Audiolatenz messen

Auf dieser Seite werden gängige Methoden zum Messen der Eingabe- und Ausgabelatenz beschrieben.

Ausgabelatenz messen

Es gibt mehrere Methoden zum Messen der Ausgabelatenz, die sich in Genauigkeit und Einfachheit unterscheiden. Sie werden unten beschrieben. Eine Beispieltestumgebung finden Sie im Test-Circuit.

LED- und Oszilloskoptest

Bei diesem Test wird die Latenz in Bezug auf die LED-Anzeige des Geräts gemessen. Wenn Ihr Produktionsgerät keine LED hat, können Sie die LED auf einem Gerät mit Prototyp-Formfaktor installieren. Für eine noch genauere Messung bei Prototypgeräten mit freiliegenden Schaltungen können Sie einen Oszilloskop-Messstab direkt mit der LED verbinden, um die Latenz des Lichtsensors zu umgehen.

Wenn Sie weder auf dem Produktionsgerät noch auf dem Prototyp eine LED anbringen können, versuchen Sie es mit den folgenden Umgehungslösungen:

  • Verwenden Sie einen GPIO-Pin (General Purpose Input/Output) für denselben Zweck.
  • Verwenden Sie JTAG oder einen anderen Debug-Port.
  • Verwenden Sie die Hintergrundbeleuchtung des Displays. Das kann riskant sein, da die Hintergrundbeleuchtung eine nicht unerhebliche 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 gleichzeitig mit der Audioausgabe regelmäßig blinken lässt.

    Hinweis:Um aussagekräftige Ergebnisse zu erhalten, ist es wichtig, in der Test-App die richtigen APIs zu verwenden, damit der schnelle Audioausgabepfad verwendet wird. Weitere Informationen finden Sie unter Design für reduzierte Latenz.

  2. Platzieren Sie einen Lichtsensor neben der LED.
  3. Schließen Sie die Sonden eines Zweikanal-Oszilloskops sowohl an den Kopfhöreranschluss (Leitungsausgang) als auch an den Lichtsensor an.
  4. Messen Sie mit dem Oszilloskop die Zeitdifferenz zwischen dem Linienausgangssignal und dem Lichtsensorsignal.

Die Zeitdifferenz ist die ungefähre Latenz der Audioausgabe, vorausgesetzt, die LED-Latenz und die Lichtsensorlatenz sind beide gleich null. Normalerweise haben die LED und der Lichtsensor eine relativ niedrige Latenz von etwa einer Millisekunde oder weniger, was ausreichend niedrig ist, um sie zu ignorieren.

Umlauflatenz messen

Die Umlauflatenz ist die Summe aus Ausgabe- und Eingabelatenz.

Larsen-Test

Einer der einfachsten Latenztests ist ein Audiofeedback-Test (Larsen-Effekt). Dies liefert ein grobes Maß für die kombinierte Ausgabe- und Eingabelatenz, indem eine Impulsantwortschleife getaktet wird. Dieser Test ist aufgrund seiner Natur für eine detaillierte Analyse nicht sehr nützlich. Er kann jedoch zur Kalibrierung anderer Tests und zum Festlegen einer Obergrenze verwendet werden.

Bei dieser Methode werden die Komponentenzeiten nicht aufgeschlüsselt. Das ist wichtig, wenn die Ausgabelatenz und die Eingabelatenz unabhängig voneinander sind. Diese Methode wird daher nicht empfohlen, um genaue Werte für die Ausgabe- oder Eingabelatenz zu messen. Sie kann jedoch nützlich sein, um grobe Schätzungen zu erhalten.

Die Ausgabelatenz zum Lautsprecher auf dem Gerät kann deutlich höher sein als die Ausgabelatenz zum Headsetanschluss. Das liegt an der Lautsprecherkorrektur und dem Lautsprecherschutz.

So führen Sie diesen Test durch:

  1. Eine App ausführen, die Audio vom Mikrofon aufnimmt und die aufgenommenen Daten sofort über den Lautsprecher wiedergibt
  2. Erstellen Sie einen externen Ton, z. B. indem Sie mit einem Bleistift auf das Mikrofon klopfen. Dieser Rauschen erzeugt eine Feedbackschleife. Alternativ kann ein Impuls auch mithilfe von Software in die Schleife eingeschleust werden.
  3. Messen Sie die Zeit zwischen den Feedbackimpulsen, um die Summe aus Ausgabelatenz, Eingabelatenz und Anwendungsoverhead zu erhalten.

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

Audio-Loopback-Dongle

Der Audio-Loopback-Dongle von Dr. Rick O'Rang eignet sich zum Messen der Umlaufzeitlatenz über den Headset-Anschluss. Die folgende Abbildung zeigt das Ergebnis, wenn einmal ein Impuls in die Schleife eingespeist und die Rückkopplungsschleife dann schwingen gelassen wird. Die Periode der Schwankungen ist die Umlauflatenz. Das jeweilige Gerät, die Softwareversion und die Testbedingungen werden hier nicht angegeben. Die angezeigten Ergebnisse sollten nicht extrapoliert werden.

Messung des gesamten Kaufprozesses

Abbildung 1: Messung des gesamten Kaufprozesses

Möglicherweise müssen Sie das USB-Kabel entfernen, um Geräusche zu reduzieren, und die Lautstärke anpassen, um eine stabile Schwingung zu erzielen.

Eingabelatenz messen

Die Eingabelatenz ist schwieriger zu messen als die Ausgabelatenz. Die folgenden Tests können Ihnen helfen.

Eine Möglichkeit besteht darin, zuerst die Ausgabelatenz mithilfe der LED- und Oszilloskopmethode zu bestimmen und dann mit dem Audiofeedback-Test (Larsen) die Summe aus Ausgabelatenz und Eingabelatenz zu ermitteln. Der Unterschied zwischen diesen beiden Messungen ist die Eingabelatenz.

Eine weitere Möglichkeit besteht darin, einen GPIO-Pin auf einem Prototypgerät zu verwenden. Pulsieren Sie extern einen GPIO-Eingang, während Sie dem Gerät ein Audiosignal zuführen. Führen Sie eine App aus, die die Unterschiede zwischen den Ankunftszeiten des GPIO-Signals und der Audiodaten vergleicht.

Latenz reduzieren

Um eine geringe Audiolatenz zu erreichen, sollten Sie im gesamten System besonders auf die Planung, die Interrupt-Verarbeitung, die Energieverwaltung und das Design der Gerätetreiber achten. Dein Ziel ist es, zu verhindern, dass ein Teil der Plattform einen SCHED_FIFO-Audio-Thread länger als ein paar Millisekunden blockiert. Mit einem solchen systematischen Ansatz kannst du die Audiolatenz verringern und zusätzlich von einer insgesamt vorhersehbareren Leistung profitieren.

Audiounterbrechungen sind, wenn sie auftreten, oft nur unter bestimmten Bedingungen oder nur bei Übergängen erkennbar. Versuchen Sie, das System zu belasten, indem Sie neue Apps starten und schnell durch verschiedene Displays scrollen. Beachten Sie jedoch, dass einige Testbedingungen so anspruchsvoll sind, dass sie über die Designziele hinausgehen. Wenn Sie beispielsweise einen Fehlerbericht aufnehmen, wird das System so stark belastet, dass in diesem Fall ein Unterlauf akzeptabel ist.

So testen Sie auf Unterbrechungen:

  • Konfigurieren Sie alle DSPs nach dem App-Prozessor so, dass sie eine minimale Latenz hinzufügen.
  • Führen Sie Tests unter verschiedenen Bedingungen durch, z. B. mit ein- oder ausgeschaltetem Display, angeschlossenem oder nicht angeschlossenem USB-Kabel, aktiviertem oder deaktiviertem WLAN, aktiviertem oder deaktiviertem Bluetooth sowie aktivierten oder deaktivierten Telefon- und Datenfunkschnittstellen.
  • Wählen Sie relativ leise Musik aus, die Sie gut kennen und bei der Unterbrechungen leicht zu hören sind.
  • Verwenden Sie kabelgebundene Kopfhörer für eine höhere Empfindlichkeit.
  • Mach Pausen, damit du nicht an „Ohrenschmerzen“ leidest.

Sobald Sie die zugrunde liegenden Ursachen für Unterbrechungen gefunden haben, reduzieren Sie die Anzahl und Größe der Puffer, um diese Vorteile zu nutzen. Der vorschnelle Ansatz, die Anzahl und Größe der Puffer vor der Analyse von Unterbrechungen zu reduzieren und die Ursachen zu beheben, führt nur zu Frustration.

Tools

systrace ist ein hervorragendes Allzwecktool zur Diagnose von Leistungsproblemen auf Systemebene.

Die Ausgabe von dumpsys media.audio_flinger enthält auch einen nützlichen Abschnitt namens „Einfache gleitende Statistiken“. Hier sehen Sie eine Zusammenfassung der variierenden verstrichenen Zeiten für jeden Audiomix und jeden I/O-Zyklus. Idealerweise sollten alle Zeitmessungen ungefähr der durchschnittlichen oder Nennzykluszeit entsprechen. Ein sehr niedriger Mindest- oder ein sehr hoher Höchstwert ist ein Hinweis auf ein Problem, wahrscheinlich auf eine hohe Planungslatenz oder eine lange Zeitspanne, in der Unterbrechungen deaktiviert sind. Der Schwanz der Ausgabe ist besonders hilfreich, da er die Variabilität über +/- 3 Standardabweichungen hinaus hervorhebt.