Per garantire la stabilità del sistema e la possibilità di accedere a stati di basso consumo energetico come Suspend-to-RAM (S2R) o Suspend-to-Disk (S2D), è fondamentale che le risorse audio vengano gestite correttamente durante le transizioni di alimentazione.
Le app potrebbero non rilasciare sempre i flussi di input o output audio quando il sistema avvia una sospensione. I flussi audio attivi possono impedire al sottosistema audio e all'hardware sottostante di diventare inattivi, il che può impedire al system-on-a-chip (SoC) di entrare in deep sleep. Ciò comporta tentativi di sospensione non riusciti e un aumento del consumo di energia.
Gli OEM devono implementare un meccanismo di fallback efficace all'interno dell'implementazione dell'Audio Hardware Abstraction Layer (HAL) per gestire i flussi audio attivi durante le transizioni di sospensione. Questo è essenziale per la stabilità della piattaforma, indipendentemente dal comportamento dell'app.
Le app devono gestire correttamente le risorse audio, ma il sistema non può fare affidamento su questa gestione per le transizioni fondamentali dello stato di alimentazione. L'Audio HAL è il livello appropriato per applicare la disattivazione delle risorse al fine di garantire la capacità del sistema di accedere agli stati di sospensione. Consigliamo questo approccio per una gestione dell'alimentazione efficace.
Implementare la gestione dell'alimentazione
Per implementare una gestione dell'alimentazione efficace in Audio HAL:
Rileva le modifiche dello stato di alimentazione del sistema, in particolare la transizione alla sospensione.
Quando il sistema si sta preparando alla sospensione, intervieni se sono ancora attivi flussi audio (sia di input che di output):
- Rilascia i flussi di output hardware e ignora i dati in entrata dal framework audio.
- Rilascia i flussi di input hardware e invia audio silenzioso al framework.
Questa azione a livello HAL garantisce che l'hardware audio possa diventare inattivo, consentendo al sistema di sospendersi correttamente, anche se un'app non ha rilasciato le risorse audio.
Quando il sistema riprende dalla sospensione, ripristina lo stato attivo del sottosistema audio. Ciò comporta la riattivazione dei flussi di output precedentemente disattivati e dei flussi di input, consentendo alle app di continuare la riproduzione e l'acquisizione audio.
Impatto sulle app
La gestione delle risorse audio a livello HAL durante la sospensione influisce sulle app nei seguenti modi:
- Sospensione trasparente: per le app che utilizzano un microfono, la sospensione del sistema (accesso a S2D o S2R) è trasparente.
- Audio disattivato durante la transizione: dopo l'avvio della transizione di sospensione, i flussi attivi vengono disattivati in HAL. L'app continua a essere eseguita, ma riceve solo audio disattivato durante la sospensione.
- Ripresa automatica: al ripristino del sistema, l'app inizia automaticamente a ricevere o inviare di nuovo dati audio reali senza richiedere azioni di riacquisizione o ripristino delle risorse.