Введение

PulseAudio - это сетевая программа звукового сервера, распространяемая через свободный рабочий стол. Проект "Орг". Он работает в основном на Linux, включая Windows Subsystem for Linux на Microsoft Windows и Termux на Android; различные дистрибутивы BSD, такие как FreeBSD, OpenBSD и macOS; а также дистрибутивы Illumos и операционная система Solaris. Он служит промежуточным программным обеспечением между приложениями и аппаратным обеспечением и обрабатывает необработанные аудиопотоки PCM. PulseAudio является бесплатным программным обеспечением с открытым исходным кодом и лицензируется на условиях LGPL 2.1 или более поздней версии. PulseAudio конкурирует с новым PipeWire, который предоставляет совместимый сервер PulseAudio (известный как pipewire pulse), и PipeWire теперь используется по умолчанию во многих дистрибутивах Linux, включая Fedora Linux, Ubuntu и Debian.

Поддержка Microsoft Windows

В Microsoft Windows PulseAudio работает в подсистеме Windows для Linux. Ранее ядро NT поддерживалось через MinGW (имплементация цепочки инструментов GNU, которая включает в себя различные инструменты, такие как GCC и binutils). Однако порт ядра NT не обновлялся с 2011 года.

Архитектура программного обеспечения

В широком смысле ALSA - это подсистема ядра, которая обеспечивает звуковой аппаратный драйвер, а PulseAudio - это движок интерфейса между приложениями и ALSA. Однако его использование не является обязательным, и аудио все еще можно воспроизводить и смешивать вместе без PulseAudio. PulseAudio действует как звуковой сервер, где фоновый процесс принимает звуковой вход из одного или нескольких источников (процессов, устройств захвата и т. д.) создается. Затем фоновый процесс перенаправляет эти источники звука в один или несколько раковин (звуковые карты, удаленные сетевые серверы PulseAudio или другие процессы). Одной из целей PulseAudio является перенаправление всех звуковых потоков через него, включая процессы, которые пытаются напрямую получить доступ к аппаратному обеспечению (например, устаревшие приложения OSS). PulseAudio достигает этого, предоставляя адаптеры для приложений, использующих другие аудиосистемы, такие как aRts и ESD. В типичном сценарии установки под Linux пользователь настраивает ALSA на использование виртуального устройства, предоставляемого PulseAudio. Таким образом, приложения, использующие ALSA, будут выводить звук в PulseAudio, который затем использует ALSA для доступа к реальной звуковой карте. PulseAudio также предоставляет собственный интерфейс для приложений, которые хотят поддерживать PulseAudio напрямую, а также интерфейс для ESD-приложений, что делает его подходящим в качестве замены ESD. Для приложений OSS, PulseAudio предоставляет утилиту padsp, которая заменяет файлы устройства, такие как / dev / dsp, обманывая приложения, чтобы они поверили, что они имеют исключительный контроль над звуковой картой. В реальности, их выход перенаправляется через PulseAudio.

ЛибСидней

libSydney является полной заменой для "PulseAudio streaming API", и были сделаны планы для libSydney, чтобы в конечном итоге стать единственным аудио API, используемым в PulseAudio.

Усыновление

PulseAudio впервые появился для обычных пользователей в Fedora Linux, начиная с версии 8, затем был принят основными дистрибутивами Linux, такими как Ubuntu, Debian, Mandriva Linux и openSUSE. В проекте GNOME, а также в KDE, есть поддержка PulseAudio, поскольку он интегрирован в Plasma Workspaces, добавляя поддержку Phonon (мультимедийная структура KDE) и KMix (интегрированное приложение миксера), а также GUI "Speaker Setup", чтобы помочь в конфигурации многоканальных динамиков. PulseAudio также доступен в дистрибутиве Illumos OpenIndiana и включен по умолчанию в его рабочей среде MATE. Различные мобильные устройства на базе Linux, включая Nokia N900, Nokia N9 и Palm Pre, используют PulseAudio. Tizen, мобильная операционная система с открытым исходным кодом, которая является проектом Linux Foundation и управляется Технической руководящей группой (TSG), состоящей из Intel и Samsung, использует PulseAudio.

Проблемы на этапе принятия

PortAudio API был несовместим с дизайном PulseAudio и нуждался в модификации. Почти все пакеты, использующие OSS и многие из пакетов, использующих ALSA, должны были быть изменены для поддержки PulseAudio. Дальнейшее развитие функции без сбоев в аудио требует полного перезаписи ядра PulseAudio, а также изменения в API ALSA и внутренних устройствах. Когда он был впервые принят дистрибутивами, разработчик PulseAudio Леннарт Поеттинг (также создатель systemd) описал его как "программное обеспечение, которое в настоящее время нарушает ваш аудио". Поэтринг позже заявил, что "Убунту не совсем хорошо справлялся. Они не сделали домашнее задание" при принятии PulseAudio для Ubuntu "Hardy Heron" (8.04), проблема, которая была исправлена с последующими релизами Ubuntu. Однако в октябре 2009 года Поеттинг сообщил, что он все еще недоволен интеграцией Ubuntu с PulseAudio. Взаимодействие с старыми звуковыми компонентами с помощью определенного программного обеспечения: Некоторые программы, такие как Adobe Flash для Linux, вызвали нестабильность в PulseAudio. Новые реализации плагинов Flash не требуют конфликтующих элементов, и в результате Flash и PulseAudio теперь совместимы. Раннее управление буфером: Ранние версии PulseAudio иногда начинали искажать обработанный звук из-за неправильной обработки буфера. Для пользователей наушников, потенциальная возможность шумового вызванного потери слуха из-за чрезвычайно громких объемов в случае неправильного применения.

Другие звуковые серверы

JACK - это звуковой сервер, который обеспечивает звуковую производительность в режиме реального времени с низкой задержкой (т.е. 5 миллисекунд или меньше) и, поскольку JACK2, поддерживает эффективный балансировку нагрузки с использованием симметричной мультипроцессировки; то есть нагрузка всех аудиоклиентов может быть распределена между несколькими процессорами. JACK является предпочтительным звуковым сервером для профессиональных аудиоприложений, таких как Ardour, ReZound и LinuxSampler; несколько бесплатных дистрибутивов аудиопроизводства используют его в качестве аудиосервера по умолчанию. JACK и PulseAudio могут сосуществовать: пока JACK работает, PulseAudio может автоматически подключаться как клиент JACK, позволяя клиентам PulseAudio создавать и записывать звук одновременно с клиентами JACK. PipeWire - это аудио- и видеосервер, который "целесообразно поддерживает случаи использования, которые в настоящее время обрабатываются как PulseAudio, так и Jack".

Общая аудиоинфраструктура

До JACK и PulseAudio звук в этих системах управлялся многоцелевыми интегрированными аудиорешениями. Эти решения не полностью охватывают процесс смешивания и потоковой передачи звука, но они все еще используются JACK и PulseAudio для отправки окончательного потока звука на звуковую карту. ALSA предоставляет программный микшер под названием dmix, который был разработан до PulseAudio. Это доступно практически во всех дистрибутивах Linux и является более простым решением для микширования аудио с помощью PCM. Он не предоставляет расширенные функции (такие как планирование на основе таймера и сетевой аудио) PulseAudio. С другой стороны, ALSA в сочетании с соответствующими звуковыми картами и программным обеспечением обеспечивает низкие задержки. OSS была оригинальной звуковой системой, используемой в Linux и других операционных системах Unix, но была отменена после выхода ядра Linux 2.5. Собственная разработка была продолжена 4Front Technologies, которая в июле 2007 года выпустила исходные источники для OSS под CDDL 1.0 для OpenSolaris и под GPL 2.0 только для Linux. Современная реализация, Open Sound System v4, обеспечивает программное смешивание, переобразование и изменение громкости в зависимости от приложения; в отличие от PulseAudio, эти функции реализованы в ядре. Поддержка PulseAudio в OpenIndiana и других дистрибутивах illumos основана на внедрении OSS в ядре ("Boomer").