Прогрев звука — это время, необходимое для того, чтобы схема аудиоусилителя вашего устройства полностью включилась и достигла нормального рабочего состояния. Основными факторами, влияющими на время прогрева звука, являются управление питанием и любая логика «остановки» для стабилизации схемы.
В этом документе описывается, как измерить время прогрева звука и возможные способы его уменьшения.
Измерьте выходной прогрев
Поток FastMixer AudioFlinger автоматически измеряет разогрев вывода и сообщает об этом как часть вывода команды dumpsys media.audio_flinger
. При прогреве FastMixer вызывает write()
несколько раз, пока время между двумя write()
не станет ожидаемым. FastMixer определяет прогрев звука, наблюдая, сколько времени требуется методу write()
уровня аппаратной абстракции (HAL) для стабилизации.
Чтобы измерить прогрев звука, выполните следующие действия для встроенного динамика и проводных наушников и в разное время после загрузки. Время прогрева обычно разное для каждого устройства вывода и сразу после загрузки устройства:
- Убедитесь, что FastMixer включен.
- Включите звуки касания, выбрав «Настройки» > «Звук» > «Звуки касания» на устройстве.
- Убедитесь, что звук отключен как минимум на три секунды. Лучше пять секунд или больше, потому что само оборудование может иметь собственную логику питания помимо трех секунд, которые есть у AudioFlinger.
- Нажмите «Домой», и вы должны услышать щелчок.
- Выполните следующую команду, чтобы получить измеренное значение прогрева:
adb shell dumpsys media.audio_flinger | grep measuredWarmup
Вы должны увидеть такой вывод:
sampleRate=44100 frameCount=256 measuredWarmup=X ms, warmupCycles=X
measuredWarmup=X
— это количество миллисекунд, которое потребовалось для завершения первого набора операций HALwrite()
.warmupCycles=X
— это количество запросов на запись HAL, которое потребовалось до тех пор, пока время выполненияwrite()
не соответствовало ожидаемому. - Сделайте пять измерений и запишите их все, а также среднее значение. Если они не все примерно одинаковы, то, вероятно, измерение неверно. Например, если вы не подождите достаточно долго после выключения звука, вы увидите меньшее время прогрева, чем среднее значение.
Измерить прогрев входа
В настоящее время не существует инструментов для измерения прогрева аудиовхода. Однако время прогрева ввода можно оценить, наблюдая за временем, необходимым для возврата startRecording() .
Уменьшите время прогрева
Время прогрева обычно можно сократить за счет комбинации:
- Хорошая схема
- Точные временные задержки в драйвере устройства ядра.
- Выполнение независимых операций прогрева одновременно, а не последовательно.
- Оставление цепей включенными или отсутствие перенастройки часов (увеличивает энергопотребление в режиме ожидания)
- Кэширование вычисляемых параметров
Однако остерегайтесь чрезмерной оптимизации. Вы можете обнаружить, что вам нужно найти компромисс между малым временем прогрева и отсутствием хлопков при переключении мощности.