Audio-Aufwärmphase

Beim Aufwärmen des Audiosignals handelt es sich um die Zeit, die die Audioverstärkerschaltung in Ihrem Gerät benötigt, um vollständig mit Strom versorgt zu werden und den normalen Betriebszustand zu erreichen. Die wichtigsten Faktoren für die Audio-Aufwärmzeit sind die Energieverwaltung und die „De-Pop“-Logik zur Stabilisierung der Schaltung.

In diesem Dokument wird beschrieben, wie die Audio-Aufwärmzeit gemessen wird und wie die Aufwärmzeit verkürzt werden kann.

Ausgangsaufwärmphase messen

Der FastMixer-Thread von AudioFlinger misst automatisch die Ausgabeaufwärmphase und meldet sie als Teil der Ausgabe des Befehls dumpsys media.audio_flinger . Beim Aufwärmen ruft FastMixer write() wiederholt auf, bis die Zeit zwischen zwei write() s der erwarteten Zeit entspricht. FastMixer bestimmt die Audio-Aufwärmphase, indem es sieht, wie lange ein Hardware Abstraction Layer (HAL) write() braucht, um sich zu stabilisieren.

Um die Audio-Aufwärmphase zu messen, befolgen Sie diese Schritte für den eingebauten Lautsprecher und die kabelgebundenen Kopfhörer sowie zu unterschiedlichen Zeitpunkten nach dem Hochfahren. Die Aufwärmzeiten sind normalerweise für jedes Ausgabegerät und direkt nach dem Booten des Geräts unterschiedlich:

  1. Stellen Sie sicher, dass FastMixer aktiviert ist.
  2. Aktivieren Sie Berührungstöne, indem Sie auf dem Gerät Einstellungen > Töne > Berührungstöne auswählen.
  3. Stellen Sie sicher, dass der Ton mindestens drei Sekunden lang ausgeschaltet war. Fünf Sekunden oder mehr sind besser, da die Hardware selbst möglicherweise über die drei Sekunden von AudioFlinger hinaus über eine eigene Stromversorgungslogik verfügt.
  4. Drücken Sie Home, und Sie sollten ein Klickgeräusch hören.
  5. Führen Sie den folgenden Befehl aus, um die gemessene Aufwärmphase zu erhalten:
    adb shell dumpsys media.audio_flinger | grep measuredWarmup
    

    Sie sollten eine Ausgabe wie diese sehen:

    sampleRate=44100 frameCount=256 measuredWarmup=X ms, warmupCycles=X
    

    Der measuredWarmup=X ist die Anzahl der Millisekunden, die für den Abschluss des ersten Satzes von HAL write() benötigt wurden.

    warmupCycles=X gibt an, wie viele HAL-Schreibanfragen es dauerte, bis die Ausführungszeit von write() mit der erwarteten übereinstimmte.

  6. Nehmen Sie fünf Messungen vor und notieren Sie sie alle sowie den Mittelwert. Wenn sie nicht alle annähernd gleich sind, liegt wahrscheinlich eine falsche Messung vor. Wenn Sie beispielsweise nicht lange genug warten, nachdem der Ton ausgeschaltet wurde, wird eine kürzere Aufwärmzeit als der Durchschnittswert angezeigt.

Eingangsaufwärmphase messen

Derzeit stehen keine Tools zum Messen der Aufwärmphase des Audioeingangs zur Verfügung. Die Aufwärmzeit der Eingabe kann jedoch geschätzt werden, indem die Zeit beobachtet wird, die für die Rückkehr von startRecording() erforderlich ist.

Reduzieren Sie die Aufwärmzeit

Die Aufwärmzeit kann normalerweise durch eine Kombination aus Folgendem verkürzt werden:

  • Gutes Schaltungsdesign
  • Genaue Zeitverzögerungen im Kernel-Gerätetreiber
  • Durchführen unabhängiger Aufwärmvorgänge gleichzeitig und nicht nacheinander
  • Schaltkreise eingeschaltet lassen oder Uhren nicht neu konfigurieren (erhöht den Stromverbrauch im Leerlauf)
  • Berechnete Parameter zwischenspeichern

Hüten Sie sich jedoch vor übermäßiger Optimierung. Möglicherweise müssen Sie einen Kompromiss zwischen kurzer Aufwärmzeit und fehlendem Knacken bei Leistungsübergängen finden.