Управление аудиоресурсами во время приостановки работы

Для обеспечения стабильности системы и возможности перехода в режимы пониженного энергопотребления, такие как приостановка работы с сохранением данных в ОЗУ (S2R) или приостановка работы с сохранением данных на диск (S2D), крайне важно правильно управлять аудиоресурсами во время переключений питания.

Приложения не всегда могут освобождать входные или выходные аудиопотоки при переходе системы в спящий режим. Активные аудиопотоки могут препятствовать переходу аудиоподсистемы и базового оборудования в режим ожидания, что может блокировать переход системы на кристалле (SoC) в глубокий сон. Это приводит к неудачным попыткам перехода в спящий режим и увеличению энергопотребления.

Производители оборудования должны внедрить надежный механизм резервного копирования в свою реализацию уровня аппаратной абстракции аудио (HAL) для обработки активных аудиопотоков во время переходов в режим приостановки. Это крайне важно для стабильности платформы, независимо от поведения приложения.

Приложения должны корректно управлять аудиоресурсами, но система не может полагаться на это для основных переходов между состояниями энергопотребления. Аудио HAL — это подходящий уровень для принудительного отключения ресурсов, обеспечивающий возможность перехода системы в спящий режим. Мы рекомендуем этот подход для надежного управления энергопотреблением.

Implement power management

Для реализации надежного управления питанием в Audio HAL выполните следующие шаги:

  1. Обнаружение изменений состояния питания системы, в частности, перехода в режим ожидания.

  2. Если система готовится к приостановке работы, вмешайтесь, если какие-либо аудиопотоки (как входные, так и выходные) все еще активны:

    • Освободите аппаратные выходные потоки и отбросьте входящие данные из аудиофреймворка.
    • Освободите аппаратные входные потоки и отправьте бесшумный звук в фреймворк.

    Это действие на уровне HAL гарантирует, что аудиооборудование может перейти в режим ожидания, позволяя системе успешно приостановить работу, даже если приложение еще не освободило свои аудиоресурсы.

  3. После выхода системы из спящего режима восстановите аудиоподсистему в активное состояние. Это включает в себя разблокировку всех ранее отключенных выходных потоков и повторную активацию входных потоков, что позволит приложениям продолжить воспроизведение и захват звука.

Impact on apps

Управление аудиоресурсами на уровне HAL во время приостановки работы приложений влияет на них следующим образом:

  • Прозрачное приостановление работы: для приложений, использующих микрофон, системное приостановление работы (переход в режим S2D или S2R) происходит прозрачно.
  • Отключение звука во время перехода: После начала перехода в режим приостановки активные потоки в HAL отключаются. Приложение продолжает работать, но во время приостановки оно получает только отключенный звук.
  • Автоматическое возобновление: После возобновления работы системы приложение автоматически начинает снова принимать или отправлять реальные аудиоданные, не требуя повторного выделения ресурсов или действий по восстановлению.