После восьми месяцев разработки сформирована новая стабильная ветка мультимедийного сервера 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/.