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

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

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

  • Улучшение автоматической маршрутизации звука. В новой версии устранены побочные эффекты, всплывшие после включения в PulseAudio 8 новой системы автоматического переключения на другой профиль при отключении звукового устройства. Например, при отключении наушников PulseAudio может переключиться на S/PDIF и не вернуть звук обратно на наушники после их повторного подключения. Ещё одной проблемой является временное отключения HDMI при переходе монитора в спящий режим — в ответ на такое отключение PulseAudio может переключить вывод звука на другой порт HDMI и не вернуть его обратно после возобновления активности первого монитора. Подобные проблемы теперь устранены;
  • Серия изменений в системе подавления эха WebRTC:
    • Добавлен новый фильтр «beamforming», учитывающий пространственное размещение микрофонов. Фильтр активируется через задание параметра «beamforming=true» при загрузке компонента module-echo-cancel и требует задания данных о геометрии микрофонов и направлении источника звука, которые передаются через параметры «mic_geometry» и «target_direction».
    • Реализован режим расширенного фильтра («extended filter»), при котором система подавления эха менее чувствительна к поступающим от оборудования некорректным данным о задержках. По умолчанию режим отключен и включается после передачи опции «extended_filter=true».
    • Обеспечена возможность отключения механизма определения голосовой активности (параметр «voice_detection=false»);
    • Добавлена возможность настройки начальной громкости при использовании AGC (automatic gain control) через указание опции «agc_start_volume=[0–255]».
  • Серия улучшения в работе модулей module-role-cork и module-role-ducking: добавлена поддержка потоков с установленным свойством «media.role», добавлена специальная роль «any_role» (позволяет выбрать все потоки, за исключением текущего), обеспечена возможность выбора разных уровней приглушения громкости для разных потоков;
  • Отключён по умолчанию активированный в PulseAudio 7 новый метод синтеза LFE-канала (низкочастотные эффекты для сабвуфера) из обычного звукового контента, не имеющего отдельного LFE-канала. В PulseAudio 7.x и 8.x LFE-канал формировался на основе фильтрации низкочастотных гармоник в оригинальном контенте. В PulseAudio 9 возвращен старый метод усреднения имеющихся каналов c приглушением LFE, так как новый метод пока не работает корректно и LFE получался слишком тихим;
  • Представлена начальная реализация нового транспорта memfd-backed, использующего разделяемую память для эффективной передачи данных между сервером и клиентом без промежуточной буферизации. Бэкенд базируется на использовании механизма Memfd (позволяет выделить память как через malloc, но обращаться к ней как с файлом, по файловому дескриптору), предложенного разработчиками systemd/kdbus и включённого в состав ядра Linux 3.17;
  • Допустимая частота дискретизации повышена со 192 kHz до 384 kHz;
  • Система сборки переведена с использования по умолчанию стандарта C99 на C11. При сборке компилятор теперь вызывается с флагом »-std=gnu11», что позволяет использовать в коде новые возможности стандарата C11.

© OpenNet