ALSA - это звуковой микшер уровня ядра, он управляет вашей звуковой картой напрямую. ALSA сама по себе может обрабатывать только одно приложение за раз. Конечно, есть dmix , который был написан для решения этой проблемы. (Это модуль ALSA.)
PulseAudio - это программный микшер, расположенный поверх пользовательской среды (как если бы вы запускали приложение). Когда он работает, он использует Alsa - без dmix - и управляет всеми видами микширования, устройствами, сетевыми устройствами, всем самому.
В 2014 году вы все еще можете запустить только ALSA. Но если вы не скомпилируете свои приложения для себя и не включите поддержку ALSA везде - или не используете дистрибутив на основе исходного кода, такой как Gentoo, - у вас могут возникнуть проблемы с микшированием. Предварительно скомпилированные приложения, которые поставляются с дистрибутивами, обычно создаются только с поддержкой Pulseaudio, а не чистого ALSA. Ubuntu, например, предпочитает PulseAudio. Он поставляется с PulseAudio по умолчанию, поэтому каждое приложение компилируется для использования только PulseAudio.
PulseAudio имеет свои преимущества. Люди говорят, что это хорошо для работы со звуком по сети, и это решает некоторые проблемы с многоканальными аудиопотоками, которые произошли в чистом ALSA. Также предположительно проще разрабатывать приложения для PA. Что касается конечного пользователя, то легко выбирать новые устройства, управлять громкостью с помощью приложения и т. Д.
Однако в конфигурации по умолчанию он добавляет незначительную задержку в миксе. Это большое преимущество для определенных типов задач, требующих малой задержки, таких как некоторые игры и программное обеспечение.
OSS является альтернативой им обоим, но он не лицензирован в соответствии с GPL, что делает маловероятным, что дистрибутивы получат широкое распространение.
Иллюстрация :
Типичные звуковые системы на базе PulseAudio, такие как Ubuntu:
Ядро: ALSA -> Пользователь: PulseAudio -> app1, app2, app3
В типичной системе Linux PulseAudio смешивает аудио из всех ваших различных приложений и передает их по цепочке в ALSA.
ALSA:
Ядро: ALSA -> dmix -> Пользовательская область: app1, app2, app3
Просто с ALSA вам нужен dmix для смешивания нескольких приложений. Без этого ALSA может одновременно воспроизводить аудиопоток только из одного приложения.
OSS:
Ядро: OSS -> Пользовательская область: app1, app2, app3
При использовании OSS пользовательские приложения взаимодействуют непосредственно с OSS в ядре, которое смешивает потоки самостоятельно.
Итак, подводя итог, в вашей типичной системе в наши дни ALSA общается напрямую с вашими звуковыми картами, а Pulseaudio общается с вашими приложениями и программами и передает их в ALSA.
On MAC, Windows, Haiku, GUI runs from the kernel (okay its inside the kernel). Well. It would make sense doesnt it?
На самом деле это не так. Помните старые дурные времена «видео драйверов NT 4, которые взломали систему»? Да, это то, что вызвало это - запуск дрянных драйверов в пространстве ядра. Как вы думаете, почему Microsoft неожиданно взбунтовалась по поводу загрузки подписанных драйверов в Windows? Бинго! Потому что отвратительные драйверы вызывали сбои системы. Подписать их означало, что их проверят , и карикатура QA пройдет долгий путь ...