ALSA против PulseAudio — Проблемы с задержкой

Добрый день,

Я обсуждал некоторые детали с коллегой по поводу ALSA и PulseAudio, и мне нужна помощь, чтобы прийти к выводу. Насколько я понимаю, ALSA является относительно низкоуровневой и взаимодействует напрямую с оборудованием, в то время как PulseAudio находится поверх ALSA в качестве службы.

Кроме того, насколько я понимаю, ALSA привязана к Linux, а PulseAudio просто действует как уровень абстракции поверх ALSA и может работать на других платформах. Я пришел к выводу, что ALSA обеспечит меньшую задержку звука в большинстве систем Linux, в то время как мой коллега утверждает, что PulseAudio все равно обеспечивает лучшую (более короткую) задержку.

Кто из нас прав? Я полагаю, что, поскольку PulseAudio находится поверх ALSA или даже обертывает его, он никак не может обеспечить лучшую задержку, если только не обеспечивает свои собственные низкоуровневые вызовы.

Спасибо.


person Cloud    schedule 25.03.2015    source источник
comment
Даже если вы предполагаете, что ваш сервер — это ALSA, что не всегда так, PulseAudio не использует его так же, как еще один музыкальный проигрыватель (именно поэтому было обнаружено так много новых ошибок драйвера ALSA, когда появился pulseaudio) , а отдельная установка ALSA будет использовать такие функции, как dmix, от которых PulseAudio может отказаться. Думаю, вы правы, но все не так просто, как может показаться.   -  person that other guy    schedule 25.03.2015


Ответы (1)


ALSA (как и многие другие звуковые API) предоставляет кольцевой буфер для воспроизведения сэмплов.

Наиболее распространенный способ использования этого кольцевого буфера — постоянное его заполнение. Это означает, что сэмпл, записанный сейчас, воспроизводится только после того, как будут воспроизведены все остальные сэмплы в буфере, т. е. задержка пропорциональна размеру буфера. (Размер буфера может быть выбран приложением, но зависит от возможностей оборудования и фиксируется после выбора.)

PulseAudio может сохранять заполненной только часть буфера. (Эта функция не предлагается непосредственно ALSA, но требует отдельного таймера для отслеживания хода воспроизведения.) Таким образом, он может предлагать меньшую задержку, чем другие приложения, использующие тот же размер буфера, но, что более важно, это позволяет динамически регулировать задержку. без необходимости останавливать и перенастраивать устройство.

Другие приложения могли бы сделать то же самое, но проще использовать PulseAudio, чем снова реализовать эту обработку буфера.

person CL.    schedule 25.03.2015
comment
Большое тебе спасибо. Эта информация очень полезна. - person Cloud; 25.03.2015