Calentamiento de audio

El calentamiento de audio es el tiempo que tarda el circuito amplificador de audio de su dispositivo en estar completamente encendido y alcanzar su estado de funcionamiento normal. Los principales contribuyentes al tiempo de calentamiento del audio son la administración de energía y cualquier lógica de "desactivación" para estabilizar el circuito.

Este documento describe cómo medir el tiempo de calentamiento del audio y posibles formas de disminuir el tiempo de calentamiento.

Medir el calentamiento de salida

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 write() repetidamente hasta que el tiempo entre dos write() es la cantidad esperada. FastMixer determina el calentamiento del audio viendo cuánto tiempo tarda una write() de la capa de abstracción de hardware (HAL) en estabilizarse.

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 inicio. Los tiempos de calentamiento suelen ser diferentes para cada dispositivo de salida e inmediatamente después de iniciar el dispositivo:

  1. Asegúrese de que FastMixer esté habilitado.
  2. Habilite los sonidos táctiles seleccionando Configuración > Sonido > Sonidos táctiles en el dispositivo.
  3. Asegúrese de que el audio haya estado apagado durante al menos tres segundos. Cinco segundos o más es mejor, porque el hardware en sí podría tener su propia lógica de energía más allá de los tres segundos que tiene AudioFlinger.
  4. Presione Inicio y debería escuchar un clic.
  5. Ejecute el siguiente comando para recibir el calentamiento medido:
    adb shell dumpsys media.audio_flinger | grep measuredWarmup
    

    Deberías ver un resultado como este:

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

    El measuredWarmup=X es el número X de milisegundos que tardó en completarse el primer conjunto de HAL write() s.

    warmupCycles=X es la cantidad de solicitudes de escritura HAL que se necesitaron hasta que el tiempo de ejecución de write() coincida con lo esperado.

  6. Tome cinco medidas y regístrelas todas, así como la media. Si no son todos aproximadamente iguales, es probable que una medición sea incorrecta. Por ejemplo, si no espera lo suficiente después de que se haya apagado el audio, verá un tiempo de calentamiento menor que el valor medio.

Medir el calentamiento de entrada

Actualmente no se proporcionan herramientas para medir el calentamiento de la entrada de audio. Sin embargo, el tiempo de calentamiento de la entrada se puede estimar observando el tiempo necesario para que regrese startRecording() .

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 del kernel
  • Realizar operaciones de calentamiento independientes de forma simultánea en lugar de secuencial
  • 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 necesites hacer un equilibrio entre un tiempo de calentamiento bajo y la falta de estallidos en las transiciones de potencia.