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 nell'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:
- Assicurati che FastMixer sia abilitato.
- Attiva i suoni tocco selezionando Impostazioni > Audio > Suoni tocco sul dispositivo.
- 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.
- Premi Home. Dovresti sentire un clic.
- 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 diwrite()
dell'HAL è stato completato.Il valore
warmupCycles=X
indica il numero di richieste di scrittura dell'HAL necessarie finché il tempo di esecuzione diwrite()
non corrisponde a quanto previsto. - 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 devi scegliere tra un tempo di riscaldamento ridotto e la mancanza di scoppi alle transizioni di potenza.