Riscaldamento dell'audio

Il riscaldamento audio è il tempo necessario affinché il circuito dell'amplificatore audio del dispositivo sia completamente alimentato e raggiunga il normale stato di funzionamento. I principali fattori che contribuiscono al tempo di riscaldamento dell'audio sono la gestione dell'alimentazione e qualsiasi logica di "de-pop" per stabilizzare il circuito.

Questo documento descrive come misurare il tempo di riscaldamento dell'audio e i possibili modi per ridurlo.

Misurare il riscaldamento in uscita

Il thread FastMixer di AudioFlinger misura automaticamente il riscaldamento dell'output e lo segnala come parte dell'output del comando dumpsys media.audio_flinger . Durante il riscaldamento, FastMixer chiama write() ripetutamente finché il tempo tra due write() non raggiunge la quantità prevista. FastMixer determina il riscaldamento dell'audio osservando quanto tempo impiega una write() per stabilizzarsi.

Per misurare il riscaldamento audio, segui questi passaggi per l'altoparlante integrato e le cuffie cablate e in momenti diversi dopo l'avvio. I tempi di riscaldamento sono generalmente diversi per ciascun dispositivo di output e subito dopo l'avvio del dispositivo:

  1. Assicurati che FastMixer sia abilitato.
  2. Abilita i suoni tattili selezionando Impostazioni > Suono > Suoni tattili sul dispositivo.
  3. Assicurarsi che l'audio sia disattivato da almeno tre secondi. Cinque secondi o più sono migliori, perché l'hardware stesso potrebbe avere una propria logica di potenza oltre i tre secondi di AudioFlinger.
  4. Premi Home e dovresti sentire un clic.
  5. Eseguire il comando seguente per ricevere il riscaldamento misurato:
    adb shell dumpsys media.audio_flinger | grep measuredWarmup
    

    Dovresti vedere un output come questo:

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

    measuredWarmup=X è il numero X di millisecondi necessari per il completamento del primo set di write() dell'HAL.

    warmupCycles=X indica il numero di richieste di scrittura HAL necessarie affinché il tempo di esecuzione di write() corrisponda a quanto previsto.

  6. Prendi cinque misurazioni e registrale tutte, inclusa la media. Se non sono tutti approssimativamente uguali, è probabile che la misurazione non sia corretta. Ad esempio, se non aspetti abbastanza a lungo dopo che l'audio è stato disattivato, vedrai un tempo di riscaldamento inferiore rispetto al valore medio.

Misurare il riscaldamento in ingresso

Al momento non sono forniti strumenti per misurare il riscaldamento dell'ingresso audio. Tuttavia, il tempo di riscaldamento dell'input può essere stimato osservando il tempo richiesto per il ritorno di startRecording() .

Ridurre il tempo di riscaldamento

Il tempo di riscaldamento può solitamente essere ridotto da una combinazione di:

  • Buona progettazione del circuito
  • Ritardi temporali accurati nel driver del dispositivo del kernel
  • Esecuzione di operazioni di riscaldamento indipendenti contemporaneamente anziché in sequenza
  • Lasciare i circuiti accesi o non riconfigurare gli orologi (aumenta il consumo energetico in modalità inattiva)
  • Memorizzazione nella cache dei parametri calcolati

Attenzione però ad un'ottimizzazione eccessiva. Potresti scoprire di dover trovare un compromesso tra un tempo di riscaldamento basso e la mancanza di scoppiettio nelle transizioni di potenza.