Pour garantir la stabilité du système et la possibilité de passer à des états de faible consommation d'énergie, comme la suspension vers la RAM (S2R) ou la suspension vers le disque (S2D), il est essentiel que les ressources audio soient correctement gérées lors des transitions d'alimentation.
Il est possible que les applications ne libèrent pas toujours les flux d'entrée ou de sortie audio lorsque le système lance une suspension. Les flux audio actifs peuvent empêcher le sous-système audio et le matériel sous-jacent de devenir inactifs, ce qui peut empêcher le système sur puce (SoC) de passer en sommeil profond. Cela entraîne des tentatives de suspension infructueuses et une consommation d'énergie accrue.
Les OEM doivent implémenter un mécanisme de secours robuste dans leur implémentation de la couche d'abstraction matérielle (HAL) audio pour gérer les flux audio actifs lors des transitions de suspension. Cela est essentiel pour la stabilité de la plate-forme, quel que soit le comportement de l'application.
Les applications doivent gérer correctement les ressources audio, mais le système ne peut pas s'appuyer sur cette fonctionnalité pour les transitions d'état d'alimentation fondamentales. La HAL audio est la couche appropriée pour appliquer la désactivation des ressources afin de garantir la capacité du système à passer en état de suspension. Nous recommandons cette approche pour une gestion de l'alimentation robuste.
Implémenter la gestion de l'alimentation
Pour implémenter une gestion de l'alimentation robuste dans la HAL audio, procédez comme suit :
Détectez les changements d'état d'alimentation du système, en particulier la transition vers la suspension.
Lorsque le système se prépare à la suspension, intervenez si des flux audio (entrée et sortie) sont toujours actifs :
- Libérez les flux de sortie matériels et ignorez les données entrantes du framework audio.
- Libérez les flux d'entrée matériels et envoyez un son silencieux au framework.
Cette action au niveau de la HAL garantit que le matériel audio peut devenir inactif, ce qui permet au système de se suspendre correctement, même si une application n'a pas libéré ses ressources audio.
Lorsque le système reprend après la suspension, restaurez le sous-système audio à son état actif. Cela implique de réactiver les flux de sortie précédemment mis en sourdine et de réactiver les flux d'entrée, ce qui permet aux applications de continuer à lire et à capturer l'audio.
Impact sur les applications
La gestion des ressources audio au niveau de la HAL pendant la suspension a les conséquences suivantes sur les applications :
- Suspension transparente : pour les applications qui utilisent un micro, la suspension du système (passage à S2D ou S2R) est transparente.
- Audio mis en sourdine pendant la transition : une fois la transition de suspension lancée, les flux actifs sont mis en sourdine au niveau de la HAL. L'application continue de s'exécuter, mais elle ne reçoit que de l'audio mis en sourdine pendant la suspension.
- Reprise automatique : lors de la reprise du système, l'application recommence automatiquement à recevoir ou à envoyer des données audio réelles sans nécessiter d'actions de réacquisition ou de récupération de ressources.