Para garantir a estabilidade do sistema e a capacidade de entrar em estados de baixo consumo de energia, como suspensão para RAM (S2R) ou suspensão para disco (S2D), é fundamental que os recursos de áudio sejam gerenciados adequadamente durante as transições de energia.
Os apps nem sempre liberam fluxos de entrada ou saída de áudio quando o sistema inicia uma suspensão. Fluxos de áudio ativos podem impedir que o subsistema de áudio e o hardware subjacente fiquem ociosos, o que pode bloquear a entrada em suspensão profunda do sistema em um chip (SoC). Isso resulta em falhas nas tentativas de suspensão e aumento do consumo de energia.
Os OEMs precisam implementar um mecanismo de substituição robusto na implementação da camada de abstração de hardware (HAL) de áudio para processar streams de áudio ativos durante transições de suspensão. Isso é essencial para a estabilidade da plataforma, independente do comportamento do app.
Os apps precisam gerenciar os recursos de áudio corretamente, mas o sistema não pode depender disso para transições fundamentais de estado de energia. A HAL de áudio é a camada adequada para aplicar a desativação de recursos e garantir a capacidade do sistema de entrar em estados de suspensão. Recomendamos essa abordagem para um gerenciamento de energia robusto.
Implementar o gerenciamento de energia
Para implementar um gerenciamento de energia robusto no HAL de áudio, siga estas etapas:
Detectar mudanças no estado de energia do sistema, principalmente a transição para suspensão.
Quando o sistema estiver se preparando para suspender, intervenha se algum fluxo de áudio (entrada e saída) ainda estiver ativo:
- Libera fluxos de saída de hardware e descarta dados recebidos do framework de áudio.
- Libere fluxos de entrada de hardware e envie áudio silencioso para o framework.
Essa ação no nível da HAL garante que o hardware de áudio possa ficar ocioso, permitindo que o sistema seja suspenso com sucesso, mesmo que um app não tenha liberado os recursos de áudio.
Quando o sistema for retomado da suspensão, restaure o subsistema de áudio ao estado ativo. Isso envolve ativar o som de fluxos de saída que estavam desativados e reativar fluxos de entrada, permitindo que os apps continuem a reprodução e a captura de áudio.
Impacto nos apps
O gerenciamento no nível da HAL de recursos de áudio durante a suspensão afeta os apps das seguintes maneiras:
- Suspensão transparente:para apps que usam um microfone, a suspensão do sistema (entrando em S2D ou S2R) é transparente.
- Áudio silenciado durante a transição:depois que a transição de suspensão é iniciada, os streams ativos são silenciados no HAL. O app continua sendo executado, mas recebe apenas áudio silenciado durante a suspensão.
- Retomada automática:quando o sistema é retomado, o app começa a receber ou enviar dados de áudio reais novamente sem precisar de nenhuma reaquisição ou ação de recuperação de recursos.