Анонсирован выпуск звукового сервера PulseAudio 6.0, который выступает в роли посредника между приложениями и различными низкоуровневыми звуковыми подсистемами, абстрагируя работу с оборудованием. В новый выпуск принято более 400 исправлений, в подготовке которых приняли участие 50 разработчиков. Код PulseAudio распространяется в рамках лицензии LGPL 2.1+. Поддерживается работа в Linux, Solaris, FreeBSD, DragonFlyBSD, NetBSD, Mac OS X и Windows.
PulseAudio позволяет управлять громкостью и смешиванием звука на уровне отдельных приложений, организовывать поступление, смешивание и вывод звука при наличии нескольких входных и выходных каналов или звуковых карт, позволяет на лету менять формат звукового потока и использовать плагины, дает возможность прозрачно перенаправлять звуковой поток на другую машину.
Ключевые улучшения PulseAudio 6.0:
- Частично обеспечена поддержка профилей HFP (Hands-Free Profile) и HSP (Headset Profile) для подключения беспроводных гарнитур и наушников с интерфейсом Bluetooth. Для использования профилей HSP/HFP с BlueZ 5 подготовлено два бэкенда - "native" и "oFono", каждый из которых имеет свои достоинства и недостатки. В бэкенде "native" реализована только поддержка профиля HSP, чего достаточно для работы с большинством звуковых устройств. Вторым недостатком является отсутствие возможности установки ролей ("headset role"), что, например, не позволяет задействовать ПК в роли гарнитуры при подсоединении ПК к мобильному телефону.
Бэкенд "oFono" основан на одноимённом телефонном стеке и наоборот поддерживает только HFP и не может работать с HSP. Впрочем, ограничение в поддержке профилей не критично, так как большинство устройств поддерживают как HFP, так и HSP. Из ролей поддерживается только работа в форме гарнитуры, т.е. при подсоединении ПК к мобильному телефону, в отличие от бэкенда "native", ПК можно будет использовать только как гарнитуру, но нельзя подключить к гарнитуры к ПК. Кроме того, oFono пока не поддерживает средства управления громкостью гарнитуры (PulseAudio не может передать гарнитуре параметры громкости и выставляет громкость только на своей стороне). Одновременная работа бэкендов "native" и "oFono" не поддерживается, следует выбрать один из них.
- Возможность использования функции активации по сокету, предоставляемой системным менеджером systemd, для автоматического запуска пользовательского экземпляра PulseAudio в ответ на попытку обращения к звуковому серверу. В настоящее время возможна активация только по unix-сокетам, поддержка TCP-сокетов ожидается в будущим выпусках. Активному использованию активации PulseAudio по сокету также мешают ограничения по одновременному использованию создаваемой для пользовательского сеанса шины доступа к PulseAudio через D-Bus и пользовательской шины, создаваемой при активации по сокету. К сеансовой шине пока привязаны такие функции, как module-jackdbus-detect, протокол резервирования устройств, отслеживание работы сервера в libpulse, module-rygel-media-server, сервис обращений к серверу через D-Bus;
- Представлен новый механизм передачи потоков srbchannel ("Shared RingBuffer channel"), позволивший снизить нагрузку на CPU на 10-25% в условиях обеспечения минимальных задержек. В srbchannel для передачи пакетов метаданных между клиентом и сервером используется разделяемая память, а не unix-сокеты, с информированием о поступлении пакетов через API eventfds. Подобный подход позволил незначительно сократить число операций копирования памяти, но существенно снизил интенсивность обращения к системным вызовам. Реализация srbchannel пока не включена по умолчанию из-за возможного присутствия ошибок, для активации следует передать значение "srbchannel=true" в module-native-protocol-unix;
- Код переназначения каналов ускорен благодаря внедрению низкоуровневых специфичных оптимизаций (например, задействованы инструкции ARM NEON). Оптимизации с использованием инструкций ARM NEON также добавлены в код смешивания двух 16-разрядных потоков, содержащих одинаковое число каналов.
- В модуль module-combine-sink добавлена поддержка адаптивных задержек (dynamic latency), позволяющих использовать модуль с приложениями, чувствительными к задержкам;
- Улучшена поддержка многоканальных звуковых карт. Для карт, которые могут быть открыты только в многоканальном режиме, но для которых не удаётся подобрать число каналов, теперь предоставляется возможность определения каналов драйвером;
- Добавлена поддержка объёмного звука 7.1 для звуковых систем с интерфейсом HDMI. Улучшена работа с профилями 2.1 и нового синтаксиса их выбора (surround21:card), поддержка которого появилась в ALSA 1.0.28;
- В утилите pactl добавлена возможность установки разной громкости для каждого канала устройства или потока.
- Возможность работы с несколькими экземплярами модулей module-jack-sink и module-jack-source;
- В модуль module-switch-on-connect добавлена новая опция "only_from_unavailable", позволяющая разрешить переключение на новое устройство только в ситуации недоступности устройства по умолчанию.