Riscaldamento audio

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

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

Misura il riscaldamento dell'output

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é l'intervallo di tempo tra due write() non corrisponde alla quantità prevista. FastMixer determina il riscaldamento audio controllando la durata di un'astrazione hardware Il livello (HAL) write() richiede la stabilizzazione.

Per misurare il riscaldamento dell'audio, segui questi passaggi per l'altoparlante integrato e le cuffie con cavo 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. Attiva i suoni alla pressione selezionando Impostazioni > Audio > Suoni alla pressione sul dispositivo.
  3. Assicurati che l'audio sia stato disattivato per almeno tre secondi. Cinque secondi o più è meglio, l'hardware stesso potrebbe avere una propria logica di alimentazione oltre i tre secondi di AudioFlinger.
  4. Premi Home. Dovresti sentire un clic.
  5. Esegui questo comando per ricevere il riscaldamento misurato:
    adb shell dumpsys media.audio_flinger | grep measuredWarmup
    

    Dovresti vedere un output simile al seguente:

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

    measuredWarmup=X corrisponde al numero di X di millisecondi il primo set di write() dell'HAL è stato completato.

    Il valore warmupCycles=X indica il numero di richieste di scrittura dell'HAL necessarie finché il tempo di esecuzione di write() non corrisponde a quanto previsto.

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

Misura riscaldamento input

Al momento non sono disponibili strumenti per misurare il riscaldamento dell'input audio. Tuttavia, il tempo di riscaldamento dell'input può essere stimato osservando il tempo necessario per startRecording() da restituire.

Riduci il tempo di riscaldamento

In genere, il tempo di riscaldamento può essere ridotto mediante una combinazione di:

  • Una buona progettazione dei circuiti
  • Ritardi di tempo precisi nel driver di 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 di energia inattiva)
  • Memorizzazione nella cache dei parametri calcolati

Tuttavia, fai attenzione a un'ottimizzazione eccessiva. Potresti scoprire che è necessario trovare un compromesso tra un basso tempo di riscaldamento e dell'assenza di scoppiettii nelle transizioni di potenza.