Preparación de audio

La preparación del audio es el tiempo que tarda el circuito amplificador de audio de tu dispositivo en esté completamente encendido y alcance su estado de funcionamiento normal. Los colaboradores principales hasta el tiempo de preparación del audio son la administración de energía y cualquier lógica para estabilizar en el circuito.

En este documento, se describe cómo medir el tiempo de calentamiento del audio y las posibles formas de disminuirlo. tiempo de calentamiento.

Mide la preparación de los resultados

El subproceso FastMixer de AudioFlinger mide automáticamente el calentamiento de salida. y lo informa como parte del resultado del comando dumpsys media.audio_flinger. Durante la preparación, FastMixer llama a write() de manera repetida hasta que el tiempo entre dos write() s sea la cantidad esperada. El FastMixer determina la preparación del audio observando el tiempo de una abstracción de hardware. Capa (HAL) que write() tarda en estabilizarse.

Para medir el calentamiento del audio, sigue estos pasos para la bocina integrada y los auriculares con cable en diferentes momentos después del inicio. Por lo general, los tiempos de calentamiento son diferentes para cada dispositivo de salida y justo después de iniciar el dispositivo:

  1. Asegúrate de que FastMixer esté habilitado.
  2. Para habilitar los sonidos táctiles, selecciona Configuración > Sonido > Sonidos táctiles en el dispositivo.
  3. Asegúrate de que el audio haya estado desactivado 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 potencia más allá de los tres segundos que tiene AudioFlinger.
  4. Presiona el botón de inicio y escucharás un sonido de clic.
  5. Ejecuta el siguiente comando para recibir la preparación medida:
    adb shell dumpsys media.audio_flinger | grep measuredWarmup
    

    Deberías ver un resultado como este:

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

    measuredWarmup=X es la cantidad de milisegundos que tardó en completarse el primer conjunto de write() de HAL.

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

  6. Toma cinco mediciones y anótalas todas, además de la media. Si no son casi iguales, es probable que la medición sea incorrecta. Por ejemplo, si no esperas el tiempo suficiente después de apagar el audio, verás un tiempo de preparación menor que el valor medio.

Mide la preparación de las entradas

Actualmente, no se proporcionan herramientas para medir la preparación de la entrada de audio. Sin embargo, el tiempo de preparación de la entrada se puede estimar el tiempo requerido para startRecording() para regresar.

Reduce el tiempo de calentamiento

Por lo general, el tiempo de calentamiento se puede reducir combinando los siguientes elementos:

  • Buen diseño de circuitos
  • Retrasos de tiempo precisos en el controlador de dispositivo de kernel
  • Cómo realizar operaciones de preparación independientes de forma simultánea en lugar de secuencial
  • Dejar los circuitos encendidos o no volver a configurar los relojes (aumenta el consumo de energía inactivo)
  • Almacenamiento en caché de parámetros procesados

Sin embargo, ten cuidado con la optimización excesiva. Es posible que descubras que necesitan compensar un tiempo de calentamiento bajo frente la falta de sacrificio en las transiciones de potencia.