Опубликован мультимедийный сервер PipeWire 1.4.0

После восьми месяцев разработки сформирована новая стабильная ветка мультимедийного сервера PipeWire 1.4.0, пришедшего на смену звуковому серверу PulseAudio и отличающийся от него добавлением средств для работы с потоками видео, возможностью обработки звука с минимальными задержками и новой моделью безопасности для управления доступом на уровне отдельных устройств и потоков. Проект поддерживается в GNOME и по умолчанию применяется в Fedora Linux, RHEL, Ubuntu, Debian, SUSE/openSUSE и многих других дистрибутивах Linux. Код проекта написан на языке Си и распространяется под лицензией MIT.

PipeWire базируется на многопроцессной архитектуре, позволяющей организовать совместный доступ к контенту нескольких приложений.
Предоставляются возможности для обработки любых мультимедийных потоков, смешивания и перенаправления потоков с видео, а также управления источниками видео, такими как устройства захвата видео, web-камеры или выводимое приложениями содержимое экрана. PipeWire даёт возможность организовать совместную работу нескольких приложений с веб-камерой и решает проблемы с безопасным захватом содержимого экрана и удалённым доступом к экрану в окружении Wayland.

При использовании в роли звукового сервера, PipeWire может обеспечить минимальные задержки и предоставить функциональность, комбинирующую возможности PulseAudio и JACK, в том числе учитывающую потребности систем профессиональной обработки звука, на которую не мог претендовать PulseAudio. PipeWire предлагает расширенную модель безопасности, позволяющую управлять доступом на уровне отдельных устройств и конкретных потоков. Реализованная модель доступа упрощает проброс звука и видео из изолированных контейнеров и в них.

В новой версии:

  • Добавлена поддержка систем на базе архитектуры RISC-V, а также внесены ассемблерные оптимизации для данной архитектуры.
  • Добавлена поддержка формата UMP (Universal MIDI Packet), предоставляющего контейнер для сообщений протокола MIDI 2.0. UMP теперь применяется по умолчанию для MIDI1 и MIDI2 в PipeWire. Добавлены функции для преобразования старого формата MIDI в UMP.
  • Добавлена поддержка доставки звука по Bluetooth одновременно нескольким устройствам, используя широковещательные каналы (broadcast link), определённые в профиле BAP (Basic Audio Profile), предоставляющем возможности для управления доставкой звуковых потоков на устройства, использующие Bluetooth LE (Low Energy).
  • Включена собственная реализация JACK-сервера pipewire_jackserver (Jack Audio Connection Kit), предоставляющего API “PipeWire JACK Control”.
  • Добавлена поддержка слуховых аппаратов, подключаемых через Bluetooth и соответствующих спецификации ASHA. Для подобных устройств добавлен звуковой кодек G722. Улучшена обработка данных о задержках в Bluetooth-соединениях.
  • В плагин для звуковой системы ALSA добавлена поддержка воспроизведения формата DSD (Direct Stream Digital), при его явном указании в свойстве “alsa.format” (например, alsa.format = “…. DSD_U32_BE”).
  • В resampler добавлена возможность предварительного вычисления на стадии компиляции некоторых фильтров, применяемых при преобразовании частоты дискретизации звукового сигнала.
  • Многие макросы SPA (Simple Plugin API) преобразованы в inline-функции. Все inline-функции SPA для упрощения доступа включены в библиотеку libspa.so.
  • Модуль module-filter-chain вынесен в отдельный SPA-плагин filter-graph, в который также добавлены плагины EBUR128, param_eq и dcblock, и задействована библиотека fftw для выполнения дискретного преобразования Фурье. Оптимизирован плагин audioconvert, в который добавлена поддержка включения дополнительных фильтров при обработке звука.
  • Добавлена поддержка разделения PCM (Pulse-Code Modulation) через ALSA UCM (Use Case Manager).
  • В модуль подавления эха (echo-cancel) добавлена поддержка протокола WebRTC2.
  • Реализовано определение поддерживаемых кодеков IEC958 (“PCM”, “AC3”, “EAC3”, “TrueHD”) на основе информации HDMI ELD (EDID-Like Data).
  • Добавлен новый D-Bus API Telephony, совместимый с телефонным стеком oFono.
  • Добавлен плагин преобразования видео videoconvert, основанный на FFmpeg.
  • В модуль combine-stream добавлена поддержка микширования потоков.
  • В pulse server добавлена возможность блокирования воспроизведения и захвата через правила в pulse.rules.
  • В модулях loopback и raop-sink предоставлена возможность настройки задержек.
  • В модуль vban_recv добавлена возможность динамического создания потоков.
  • В утилиту pw-cat добавлена поддержка стандартного входного и выходного потоков (stdin и stdout).
  • Для pipewire-pulse добавлен сервис systemd.
  • Удалён файл конфигурации client-rt.conf, потребность в котором отпала после появления автоматического переноса не real-time клиентов в не real-time потоки. Настройки module-rt следует перенести из client-rt.conf и client-rt.conf.d/ в client.conf и client.conf.d/.
Release. Ссылка here.