Аудиопрогрев

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

В этой статье рассказывается, как измерить время разогрева аудио и как его сократить.

Как измерить разогрев выходных данных

Поток FastMixer в AudioFlinger автоматически измеряет время прогрева выходного сигнала и сообщает об этом в выходных данных команды dumpsys media.audio_flinger. При прогреве FastMixer многократно вызывает write(), пока время между двумя вызовами write() не станет ожидаемым. FastMixer определяет время разогрева аудио, отслеживая, сколько времени требуется аппаратно-зависимому уровню (HAL) write() для стабилизации.

Чтобы измерить время прогрева аудиосистемы, выполните следующие действия для встроенного динамика и проводных наушников в разное время после загрузки. Время прогрева обычно различается для каждого устройства вывода и сразу после загрузки устройства:

  1. Убедитесь, что FastMixer включен.
  2. Чтобы включить звуки при нажатии, выберите Настройки > Звук > Звуки при нажатии.
  3. Убедитесь, что звук отключен не менее трех секунд. Лучше, если это время будет больше пяти секунд, поскольку у оборудования может быть собственная логика управления питанием, отличная от трех секунд, заданных в AudioFlinger.
  4. Нажмите кнопку главного экрана. Вы должны услышать щелчок.
  5. Чтобы получить измеренную разминку, выполните следующую команду:
    adb shell dumpsys media.audio_flinger | grep measuredWarmup
    

    Вы должны увидеть примерно такой результат:

    sampleRate=44100 frameCount=256 measuredWarmup=X ms, warmupCycles=X
    

    measuredWarmup=X – это количество миллисекунд, за которое был выполнен первый набор write() HAL.

    warmupCycles=X – это количество запросов на запись HAL, которое потребовалось, чтобы время выполнения write() соответствовало ожидаемому.

  6. Сделайте пять измерений и запишите их все, а также среднее значение. Если они сильно отличаются, то, скорее всего, одно из измерений выполнено неправильно. Например, если вы не подождете достаточно долго после выключения звука, вы увидите меньшее время прогрева, чем среднее значение.

Прогрев входа измерения

В настоящее время нет инструментов для измерения времени подготовки аудиовхода. Однако время разогрева можно оценить, наблюдая за тем, сколько времени требуется для возврата startRecording().

Сокращение времени на обучение

Время разогрева обычно можно сократить, используя следующие методы:

  • Хороший дизайн схемы
  • Точные временные задержки в драйвере устройства ядра
  • Выполнение независимых операций инициализации одновременно, а не последовательно.
  • Оставлять включенными цепи питания или не перенастраивать часы (увеличивает потребление энергии в режиме ожидания).
  • Кеширование вычисляемых параметров

Однако не стоит увлекаться чрезмерной оптимизацией. Возможно, вам придется выбирать между быстрым запуском и отсутствием щелчков при переключении питания.