Выпуск звукового сервера PulseAudio 10.0

Доступен релиз звукового сервера PulseAudio 10.0, который выступает в роли посредника между приложениями и различными низкоуровневыми звуковыми подсистемами, абстрагируя работу с оборудованием. PulseAudio позволяет управлять громкостью и смешиванием звука на уровне отдельных приложений, организовывать поступление, смешивание и вывод звука при наличии нескольких входных и выходных каналов или звуковых карт, позволяет на лету менять формат звукового потока и использовать плагины, дает возможность прозрачно перенаправлять звуковой поток на другую машину. Код PulseAudio распространяется в рамках лицензии LGPL 2.1+. Поддерживается работа в Linux, Solaris, FreeBSD, OpenBSD, DragonFlyBSD, NetBSD, macOS и Windows.

Ключевые улучшения PulseAudio 10.0:

-Реализовано автоматическое переключение профиля Bluetooth при использовании приложений VoIP. При совершении голосового звонка, если VoIP-приложение откроет звуковой канал со свойством "media.role=phone", модуль module-bluetooth-policy теперь автоматически переключит профиль Bluetooth с A2DP, применяемого для прослушивания музыки, на HSP/HFP, предназначенного для работы в роли телефонной гарнитуры. После того как канал будет закрыт, будет возвращено использование профиля A2DP;
-Раздельное назначение уровня громкости для Bluetooth-профилей A2DP и HSP. Установка одного и того же значения уровня громкости приводит к разной фактической громкости звучания профилей A2DP и HSP, поэтому PulseAudio теперь обрабатывает и сохраняет раздельные параметры громкости для профилей A2DP и HSP;
-Добавлен новый модуль module-allow-passthrough для повышения приоритета напрямую проброшенных потоков, в которых содержимое от приложения к звуковой карте передаётся в неизменном виде, т.е. не должно перекодироваться и смешиваться с другими потоками. Обычно прямой проброс применяется для вывода уже сжатого звукового потока через соединение S/PDIF.
-Представленный модуль устанавливает для прямых потоков наивысший приоритет, поэтому если к заданному устройству уже были открыты потоки, они будут вытеснены и перенаправлены в фиктивное устройство dummy. Ранее, при активности каких-либо потоков к устройству вывода, попытка прямого проброса завершалась неудачей. Теперь эта проблема решена;
-Налажен процесс горячего подключения через USB звуковых карт с поддержкой объёмного звука (surround);
-Включен по умолчанию основанный на технологии memfd механизм разделяемой памяти, применяемый для эффективной передачи данных между сервером и клиентом без промежуточной буферизации. Механизм Memfd был предложен разработчиками systemd/kdbus и включён в состав ядра Linux 3.17. Memfd позволяет выделить память как через malloc, но обращаться к ней как с файлом, по файловому дескриптору. Для отключения можно воспользоваться настройкой "enable-memfd = no" в daemon.conf;
-Из состава удалён модуль module-xenpv-sink, который оказался невостребован;
-Из зависимостей удалена библиотека json-c, использование которой приводило к конфликтам с реализацией JSON из состава glib. Отныне функции для работы с JSON встроены непосредственно в libpulse;
-При запуске PulseAudio средствами systemd отныне в первую очередь всегда создаётся сокет pulseaudio.socket, который установлен в качестве зависимости для сервиса pulseaudio.service;
Обеспечена совместимость с OpenSSL 1.1.0;
-Явно определено, что графический интерфейс эквалайзера qpaeq поставляется под лицензией AGPL, а не LGPL, применяемой для остального кода PulseAudio. Ранее факт использования AGPL был упомянут только в исходных текстах qpaeq, что приводило к упущению данной лицензии производителями дистрибутивов при расстановке меток для пакетов.