Доступен звуковой сервер PulseAudio 6.0

Анонсирован выпуск звукового сервера 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, чего достаточно для работы с большинством звуковых устройств. Вторым недостатком бэкенда «native» является отсутствие возможности установки ролей («headset role»), что, например, не позволяет задействовать ПК в роли гарнитуры при подсоединении ПК к мобильному телефону. Бэкенд «oFono» основан на одноимённом телефонном стеке и наоборот поддерживает только HFP и не может работать с HSP. Впрочем, ограничение в поддержке профилей не критично, так как большинство устройств поддерживают как HFP, так и HSP. Из ролей поддерживается только работа в форме гарнитуры, т.е. при подсоединении ПК к мобильному телефону, в отличие от бэкенда «native», ПК можно будет использовать только как гарнитуру, но нельзя подключить гарнитуру к ПК. Кроме того, oFono пока не поддерживает средства управления громкостью гарнитуры (PulseAudio не может передать гарнитуре параметры громкости и выставляет громкость только на своей стороне). Одновременная работа бэкендов «native» и «oFono» не поддерживается, следует выбрать один из них.

Возможность использования функции активации по сокету, предоставляемой системным менеджером systemd, для автоматического запуска пользовательского экземпляра PulseAudio в ответ на попытку обращения к звуковому серверу. В настоящее время возможна активация только по unix-сокетам, поддержка TCP-сокетов ожидается в будущих выпусках. Активному использованию активации PulseAudio по сокету также мешают ограничения по одновременному использованию создаваемой для пользовательского сеанса шины и пользовательской шины, создаваемой при активации по сокету. К сеансовой шине пока привязаны такие функции, как 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», позволяющая разрешить переключение на новое устройство только в ситуации недоступности устройства по умолчанию.

© OpenNet