Die Audio-Aufwärmzeit ist die Zeit, die vergeht, bis die Audioverstärkerschaltung Ihres Geräts vollständig eingeschaltet ist und den normalen Betriebsstatus erreicht. Die Hauptfaktoren für die Aufwärmzeit von Audiogeräten sind die Energieverwaltung und die Logik zur Unterdrückung von Popp-Geräuschen, um die Schaltung zu stabilisieren.
In diesem Dokument wird beschrieben, wie Sie die Aufwärmzeit für Audio messen und wie Sie sie verkürzen können.
Ausgabevorwärmung messen
Der FastMixer-Thread von AudioFlinger misst automatisch die Ausgabeaufwärmung und gibt sie als Teil der Ausgabe des Befehls dumpsys media.audio_flinger
an.
Während der Aufwärmphase ruft FastMixer write()
wiederholt auf, bis die Zeit zwischen zwei write()
s der erwarteten entspricht.
FastMixer bestimmt das Audio-Warm-up, indem er ermittelt, wie lange es dauert, bis sich eine Hardware Abstraction Layer (HAL) write()
stabilisiert.
Führen Sie die folgenden Schritte für den integrierten Lautsprecher und kabelgebundene Kopfhörer aus, um die Audio-Aufwärmzeit zu messen. Wiederholen Sie die Schritte zu unterschiedlichen Zeiten nach dem Starten. Die Aufwärmzeiten sind in der Regel für jedes Ausgabegerät unterschiedlich und direkt nach dem Starten des Geräts:
- Prüfen Sie, ob FastMixer aktiviert ist.
- Sie können Touch-Töne aktivieren, indem Sie auf dem Gerät Einstellungen > Ton > Touch-Töne auswählen.
- Das Audio muss mindestens drei Sekunden lang stummgeschaltet gewesen sein. Fünf Sekunden oder mehr sind besser, da die Hardware selbst möglicherweise eine eigene Energieverwaltung hat, die über die drei Sekunden von AudioFlinger hinausgeht.
- Drücken Sie die Startbildschirmtaste. Sie sollten ein Klicken hören.
- Führen Sie den folgenden Befehl aus, um die gemessene Aufwärmzeit zu erhalten:
adb shell dumpsys media.audio_flinger | grep measuredWarmup
Die Ausgabe sollte in etwa so aussehen:
sampleRate=44100 frameCount=256 measuredWarmup=X ms, warmupCycles=X
Die
measuredWarmup=X
ist die Anzahl der Millisekunden, die für die Ausführung der ersten HAL-write()
s benötigt wurden.Die
warmupCycles=X
gibt an, wie viele HAL-Schreibanfragen erforderlich waren, bis die Ausführungszeit vonwrite()
der erwarteten entspricht. - Nehmen Sie fünf Messungen vor und notieren Sie sich alle Ergebnisse sowie den Mittelwert. Wenn sie nicht ungefähr gleich sind, ist eine Messung wahrscheinlich falsch. Wenn Sie beispielsweise nicht lange genug warten, nachdem der Ton ausgeschaltet wurde, wird eine kürzere Aufwärmzeit als der Mittelwert angezeigt.
Eingabevorwärmung messen
Derzeit gibt es keine Tools zum Messen der Aufwärmzeit der Audioeingabe. Die Aufwärmzeit der Eingabe kann jedoch anhand der Zeit geschätzt werden, die für die Rückgabe von startRecording() erforderlich ist.
Aufwärmzeit verkürzen
Die Aufwärmzeit lässt sich in der Regel durch eine Kombination aus folgenden Maßnahmen reduzieren:
- Gutes Schaltungsdesign
- Genaue Zeitverzögerungen im Kernel-Gerätetreiber
- Unabhängige Aufwärmvorgänge gleichzeitig statt nacheinander ausführen
- Schaltkreise eingeschaltet lassen oder Taktgeber nicht neu konfigurieren (erhöht den Stromverbrauch im Leerlauf)
- Berechnete Parameter im Cache speichern
Achten Sie jedoch darauf, dass Sie nicht zu sehr optimieren. Möglicherweise müssen Sie einen Kompromiss zwischen einer kurzen Aufwärmzeit und dem Fehlen von Knacken bei der Stromversorgung eingehen.