El calentamiento de audio es el tiempo que tarda el circuito del amplificador de audio en su dispositivo en estar completamente encendido y alcanzar su estado de funcionamiento normal. Los principales factores que contribuyen al tiempo de calentamiento del audio son la administración de energía y cualquier lógica de "desconexión" para estabilizar el circuito.
Este documento describe cómo medir el tiempo de calentamiento del audio y las posibles formas de disminuir el tiempo de calentamiento.
Calentamiento de la salida de medición
El subproceso FastMixer de AudioFlinger mide automáticamente el calentamiento de la salida y lo informa como parte de la salida del comando dumpsys media.audio_flinger
. Durante el calentamiento, FastMixer llama a write()
repetidamente hasta que el tiempo entre dos write()
es la cantidad esperada. FastMixer determina el calentamiento del audio al ver cuánto tarda en estabilizarse una capa de abstracción de hardware (HAL) write()
.
Para medir el calentamiento del audio, siga estos pasos para el altavoz integrado y los auriculares con cable y en diferentes momentos después del arranque. Los tiempos de calentamiento suelen ser diferentes para cada dispositivo de salida y justo después de iniciar el dispositivo:
- Asegúrese de que FastMixer esté habilitado.
- Habilite los sonidos táctiles seleccionando Configuración > Sonido > Sonidos táctiles en el dispositivo.
- Asegúrese de que el audio haya estado apagado durante al menos tres segundos. Cinco segundos o más es mejor, porque el propio hardware podría tener su propia lógica de potencia más allá de los tres segundos que tiene AudioFlinger.
- Presiona Inicio y deberías escuchar un clic.
- Ejecute el siguiente comando para recibir el calentamiento medido:
adb shell dumpsys media.audio_flinger | grep measuredWarmup
Debería ver una salida como esta:
sampleRate=44100 frameCount=256 measuredWarmup=X ms, warmupCycles=X
La
measuredWarmup=X
es el número X de milisegundos que tardó en completarse el primer conjunto de HALwrite()
s.El
warmupCycles=X
es la cantidad de solicitudes de escritura de HAL que se necesitaron hasta que el tiempo de ejecución dewrite()
coincida con lo esperado. - Tome cinco medidas y regístrelas todas, así como la media. Si no son todos aproximadamente iguales, entonces es probable que una medida sea incorrecta. Por ejemplo, si no espera lo suficiente después de que el audio se haya apagado, verá un tiempo de calentamiento más bajo que el valor medio.
Calentamiento de entrada de medición
Actualmente no se proporcionan herramientas para medir el calentamiento de la entrada de audio. Sin embargo, el tiempo de calentamiento de entrada se puede estimar observando el tiempo requerido para que startRecording() regrese.
Reducir el tiempo de calentamiento
El tiempo de calentamiento generalmente se puede reducir mediante una combinación de:
- Buen diseño de circuito
- Retrasos de tiempo precisos en el controlador del dispositivo kernel
- Realizar operaciones de calentamiento independientes al mismo tiempo en lugar de secuencialmente
- Dejar los circuitos encendidos o no reconfigurar los relojes (aumenta el consumo de energía en reposo)
- Almacenamiento en caché de parámetros calculados
Sin embargo, tenga cuidado con la optimización excesiva. Es posible que descubra que necesita compensar entre un tiempo de calentamiento bajo y la falta de estallidos en las transiciones de potencia.