Administra los recursos de audio durante la suspensión

Para garantizar la estabilidad del sistema y la capacidad de ingresar a estados de bajo consumo, como la suspensión a RAM (S2R) o la suspensión a disco (S2D), es fundamental que los recursos de audio se administren correctamente durante las transiciones de energía.

Es posible que las apps no siempre liberen los flujos de entrada o salida de audio cuando el sistema inicia una suspensión. Los flujos de audio activos pueden impedir que el subsistema de audio y el hardware subyacente queden inactivos, lo que puede bloquear el sistema en chip (SoC) para que no entre en suspensión profunda. Esto provoca intentos de suspensión fallidos y un mayor consumo de energía.

Los OEM deben implementar un mecanismo de resguardo sólido en su implementación de la capa de abstracción de hardware (HAL) de audio para controlar los flujos de audio activos durante las transiciones de suspensión. Esto es esencial para la estabilidad de la plataforma, independientemente del comportamiento de la app.

Las apps deben administrar los recursos de audio correctamente, pero el sistema no puede depender de esto para las transiciones fundamentales del estado de energía. El HAL de audio es la capa adecuada para aplicar la desactivación de recursos y garantizar la capacidad del sistema para entrar en estados de suspensión. Recomendamos este enfoque para una administración de energía sólida.

Implementa la administración de energía

Para implementar una administración de energía sólida en el HAL de audio, sigue estos pasos:

  1. Detectar cambios en el estado de energía del sistema, en particular, la transición a la suspensión

  2. Cuando el sistema se esté preparando para suspenderse, interviene si algún flujo de audio (tanto de entrada como de salida) sigue activo:

    • Libera los flujos de salida de hardware y descarta los datos entrantes del framework de audio.
    • Liberar los flujos de entrada de hardware y enviar audio silencioso al framework

    Esta acción a nivel del HAL garantiza que el hardware de audio pueda quedar inactivo, lo que permite que el sistema se suspenda correctamente, incluso si una app no liberó sus recursos de audio.

  3. Cuando el sistema se reanuda después de la suspensión, restablece el subsistema de audio a su estado activo. Esto implica quitar el silencio de los flujos de salida silenciados anteriormente y reactivar los flujos de entrada, lo que permite que las apps continúen con la reproducción y la captura de audio.

Impacto en las apps

La administración de recursos de audio a nivel del HAL durante la suspensión afecta a las apps de las siguientes maneras:

  • Suspensión transparente: Para las apps que usan un micrófono, la suspensión del sistema (ingreso a S2D o S2R) es transparente.
  • Audio silenciado durante la transición: Después de que se inicia la transición de suspensión, los flujos activos se silencian en el HAL. La app sigue ejecutándose, pero solo recibe audio silenciado durante la suspensión.
  • Reanudación automática: Cuando se reanuda el sistema, la app comienza automáticamente a recibir o enviar datos de audio reales de nuevo sin necesidad de volver a adquirir recursos ni realizar acciones de recuperación.