Abilitazione audio

Il warm up audio è il tempo necessario per l'alimentazione completa del circuito dell'amplificatore audio del dispositivo e per il raggiungimento del normale stato di funzionamento. I fattori principali che influiscono sul 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 acclimatamento dell'audio e i possibili modi per ridurlo.

Misurare il riscaldamento dell'output

Il thread FastMixer di AudioFlinger misura automaticamente il riscaldamento dell'output e lo segnala nell'output del comando dumpsys media.audio_flinger. Durante il riscaldamento, FastMixer chiama write() ripetutamente fino a quando il tempo tra due write() è pari all'importo previsto. FastMixer determina il riscaldamento dell'audio osservando il tempo necessario per la stabilizzazione di un livello di astrazione hardware (HAL) write().

Per misurare il riscaldamento audio, segui questi passaggi per lo speaker integrato e le cuffie con cavo e in momenti diversi dopo l'avvio. I tempi di riscaldamento sono in genere diversi per ogni dispositivo di output e subito dopo l'avvio del dispositivo:

  1. Assicurati che FastMixer sia abilitato.
  2. Attiva i suoni tocco selezionando Impostazioni > Audio > Suoni tocco sul dispositivo.
  3. Assicurati che l'audio sia disattivato da almeno tre secondi. Cinque secondi o più sono meglio, perché l'hardware stesso potrebbe avere una propria logica di alimentazione oltre i tre secondi di AudioFlinger.
  4. Premi Home e dovresti sentire un clic.
  5. Esegui il seguente 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 è il numero X di millisecondi necessari per il completamento del primo insieme di write() HAL.

    warmupCycles=X indica il numero di richieste di scrittura HAL necessarie fino a quando il tempo di esecuzione di write() non corrisponde a quello previsto.

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

Misurare il riscaldamento dell'input

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

Riduci il tempo di riscaldamento

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

  • Progettazione del circuito di buona qualità
  • Ritardi temporali accurati nel driver del dispositivo del kernel
  • Eseguire operazioni di riscaldamento indipendenti in modo simultaneo anziché sequenziale
  • Lasciare i circuiti accesi o non ricollegare gli orologi (aumenta il consumo di energia inutilizzata)
  • Memorizzazione nella cache dei parametri calcolati

Tuttavia, fai attenzione a non ottimizzare eccessivamente. Potresti dover scegliere tra un tempo di riscaldamento ridotto e la mancanza di scoppi alle transizioni di potenza.