Опубликован выпуск проекта PipeWire 0.3.35, развивающего мультимедийный сервер нового поколения, идущий на замену PulseAudio. PipeWire обладает расширенными по сравнению с PulseAudio средствами для работы с потоками видео, возможностью обработки звука с минимальными задержками и новой моделью безопасности для управления доступом на уровне отдельных устройств и потоков. Проект поддерживается в GNOME и уже по умолчанию применяется в Fedora Linux. Код проекта написан на языке Си и распространяется под лицензией LGPLv2.1.
Основные изменения в PipeWire 0.3.35:
- Добавлена поддержка проброса протокола S/PDIF для передачи цифрового звука через оптические разъёмы и HDMI.
- Кодеки для Bluetooth вынесены в отдельные плагины, которые загружаются динамически.
- Внесена серия важных исправлений, связанных с поддержкой MIDI.
- Улучшена работа приложения skypeforlinux, за счёт добавления привязки, принудительно включающей использование формата S16 при передаче сведений об устройствах ввода и вывода звука. Изменение позволило решить проблему, приводящую к отсутствию звука от абонента с другого конца соединения.
- Расширено число звуковых форматов, доступных для микширования.
- Добавлен новый интерфейс для загрузки модулей. Плагины могут использовать данный интерфейс для отправки запроса на загрузку spa-плагинов.
- Увеличен размер буфера параметров, который раньше мог не вмещать все свойства узлов с большим числом каналов.
- Обеспечена активация драйверов при установке зацикленных соединений (Loopback).
- В сервере реализовано расширение device-restore, позволяющее через утилиту pavucontrol настроить кодеки IEC958 (S/PDIF), поддерживаемые устройством вывода звука.
Напомним, PipeWire расширяет область применения PulseAudio обработкой любых мультимедийных потоков и способен смешивать и перенаправлять потоки с видео. PipeWire также предоставляет возможности для управления источниками видео, такими как устройства захвата видео, web-камеры или выводимое приложениями содержимое экрана. Например, PipeWire даёт возможность организовать совместную работу нескольких приложений с веб-камерой и решает проблемы с безопасным захватом содержимого экрана и удалённым доступом к экрану в окружении Wayland.
PipeWire также может выступать в роли звукового сервера, обеспечивающего минимальные задержки и предоставляющего функциональность, комбинирующую возможности PulseAudio и JACK, в том числе учитывающую потребности систем профессиональной обработки звука, на которую не мог претендовать PulseAudio. Кроме того, PipeWire предлагает расширенную модель безопасности, позволяющую управлять доступом на уровне отдельных устройств и конкретных потоков, и упрощающую организацию проброса звука и видео из изолированных контейнеров и в них. Одной из главных целей является поддержка самодостаточных приложений в формате Flatpak и работа в графическом стеке на базе Wayland.
- Захват и воспроизведение звука и видео с минимальными задержками;
- Средства для обработки видео и звука в режиме реального времени;
- Многопроцессная архитектура, позволяющая организовать совместный доступ к контенту нескольких приложений;
- Модель обработки на основании графа мультимедийных узлов с поддержкой циклов обратной связи и атомарных обновлений графа. Допускается подключение обработчиков как внутри сервера, так и внешних плагинов;
- Эффективный интерфейс доступа к видеопотокам через передачу файловых дескрипторов и доступа к звуку через совместно используемые кольцевые буферы (shared ringbuffer);
- Возможность обработки мультимедийных данных от любых процессов;
- Наличие плагина к GStreamer для упрощения интеграции с существующими приложениями;
- Поддержка изолированных окружений и Flatpak;
- Поддержка плагинов в формате SPA (Simple Plugin API) и возможность создания плагинов, работающих в режиме жесткого реального времени;
- Гибкая система согласования используемых мультимедийных форматов и выделения буферов;
- Использование одного фонового процесса для маршрутизации звука и видео. Возможность работы в форме звукового сервера, хаба для предоставления видео приложениям (например, для gnome-shell screencast API) и сервера для управления доступом к аппаратным устройствам захвата видео.