Аудио разминка

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

В этом документе описывается, как измерить время прогрева звука, и возможные способы уменьшить время прогрева.

Измерение прогрева выхода

Поток AudioFlinger FastMixer автоматически измеряет прогрев вывода и сообщает об этом как часть вывода команды 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 равно X миллисекунд, которое потребовалось для завершения первого набора HAL write() .

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

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

Измерение прогрева входа

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

Сокращение времени прогрева

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

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

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