Zarządzanie zasobami audio podczas zawieszenia

Aby zapewnić stabilność systemu i możliwość przechodzenia w stany niskiego zużycia energii, takie jak wstrzymanie do pamięci RAM (S2R) lub wstrzymanie do dysku (S2D), ważne jest, aby zasoby audio były odpowiednio zarządzane podczas przejść między stanami zasilania.

Gdy system inicjuje wstrzymanie, aplikacje nie zawsze zwalniają strumienie wejściowe lub wyjściowe audio. Aktywne strumienie audio mogą uniemożliwiać przejście podsystemu audio i powiązanego sprzętu w stan bezczynności, co może blokować przejście systemu na chipie (SoC) w stan głębokiego uśpienia. Powoduje to nieudane próby wstrzymania i zwiększone zużycie energii.

Aby obsługiwać aktywne strumienie audio podczas przejść do stanu wstrzymania, producenci OEM muszą wdrożyć w warstwie abstrakcji sprzętu audio (HAL) niezawodny mechanizm rezerwowy. Jest to niezbędne do zapewnienia stabilności platformy niezależnie od zachowania aplikacji.

Aplikacje powinny prawidłowo zarządzać zasobami audio, ale system nie może na tym polegać w przypadku podstawowych przejść między stanami zasilania. Warstwa HAL audio jest odpowiednią warstwą do wymuszania dezaktywacji zasobów, aby zapewnić możliwość przejścia systemu w stan wstrzymania. Zalecamy to podejście w celu zapewnienia niezawodnego zarządzania energią.

Implementowanie zarządzania energią

Aby wdrożyć niezawodne zarządzanie energią w warstwie HAL audio, wykonaj te czynności:

  1. Wykrywaj zmiany stanu zasilania systemu, w szczególności przejście do stanu wstrzymania.

  2. Gdy system przygotowuje się do wstrzymania, interweniuj, jeśli jakiekolwiek strumienie audio (wejściowe i wyjściowe) są nadal aktywne:

    • Zwolnij sprzętowe strumienie wyjściowe i odrzuć przychodzące dane z platformy audio.
    • Zwolnij sprzętowe strumienie wejściowe i wyślij cichy dźwięk do platformy.

    Ta czynność na poziomie HAL zapewnia, że sprzęt audio może przejść w stan bezczynności, co umożliwia pomyślne wstrzymanie systemu, nawet jeśli aplikacja nie zwolniła zasobów audio.

  3. Gdy system wznowi działanie po wstrzymaniu, przywróć podsystem audio do stanu aktywnego. Obejmuje to wyłączenie wyciszenia wcześniej wyciszonych strumieni wyjściowych i ponowne aktywowanie strumieni wejściowych, co umożliwia aplikacjom kontynuowanie odtwarzania i przechwytywania dźwięku.

Wpływ na aplikacje

Zarządzanie zasobami audio na poziomie HAL podczas wstrzymania wpływa na aplikacje w następujący sposób:

  • Przezroczyste wstrzymanie: w przypadku aplikacji korzystających z mikrofonu wstrzymanie systemu (przejście do stanu S2D lub S2R) jest przezroczyste.
  • Wyciszony dźwięk podczas przejścia: po zainicjowaniu przejścia do stanu wstrzymania aktywne strumienie są wyciszane w warstwie HAL. Aplikacja nadal działa, ale podczas wstrzymania odbiera tylko wyciszony dźwięk.
  • Automatyczne wznowienie: po wznowieniu działania systemu aplikacja automatycznie zaczyna ponownie odbierać lub wysyłać rzeczywiste dane audio bez konieczności ponownego uzyskiwania zasobów ani wykonywania działań naprawczych.