Оценка причин задержки обработки звука в Linux и Android

Разработчики звукового движка Superpowered подробно проанализировали причины возникновения десятимиллисекундной задержки при прохождении звуковых данных от оборудования до приложения на платформе Android. Оказалось, что причиной задержки является дискретный характер работы подсистемы ALSA, из-за чего половина (5.3 мс) из наблюдаемой 13 мс задержки возникает в драйвере ALSA, а остальную половину вносит медиасервер Audio Flinger, который вынужден обрабатывать данные порциями. На оцифровку и передачу данных тратится по 1 миллисекунде.

Задержка в ALSA и Audio Flinger вызвана тем, что данные компоненты оперируют фиксированными блоками, включающими данные о 480 звуковых выборках (48000 Hz/100). Информация обрабатывается порциями и передаётся только после заполнения блока, на который тратится примерно 10 мс. В то время как драйвером заполняется очередной блок, ранее заполненный блок целиком обрабатывается звуковым стеком. Для обычных пользователей задержка на уровне нескольких десятков микросекунд незаметна, но она может представлять проблему для профессиональных звуковых приложений и VOIP-систем, а также при наложении звуковых эффектов в играх и 3D-шлемах.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.