Выпуск мультимедийного сервера PipeWire 1.0.0

Опубликован выпуск мультимедийного сервера PipeWire 1.0.0, который отмечен как первый стабильный релиз, ознаменовавший зрелость проекта. На уровне API и ABI версия 1.0 обратно совместима с веткой 0.3. PipeWire позиционируется как сервер, идущий на смену звуковому серверу PulseAudio и отличается от него добавлением средств для работы с потоками видео, возможностью обработки звука с минимальными задержками и новой моделью безопасности для управления доступом на уровне отдельных устройств и потоков. Проект поддерживается в GNOME и уже по умолчанию применяется в Fedora Linux, RHEL, Ubuntu, Debian, SUSE/openSUSE и многих других дистрибутивах Linux. Код проекта написан на языке Си и распространяется под лицензией LGPLv2.1.

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

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

Основные возможности:

  • Захват и воспроизведение звука и видео с минимальными задержками;
  • Средства для обработки видео и звука в режиме реального времени;
  • Многопроцессная архитектура, позволяющая организовать совместный доступ к контенту нескольких приложений;
  • Модель обработки на основании графа мультимедийных узлов с поддержкой циклов обратной связи и атомарных обновлений графа. Допускается подключение обработчиков как внутри сервера, так и внешних плагинов;
  • Эффективный интерфейс доступа к видеопотокам через передачу файловых дескрипторов и доступа к звуку через совместно используемые кольцевые буферы (shared ringbuffer);
  • Возможность обработки мультимедийных данных от любых процессов;
  • Наличие плагина к GStreamer для упрощения интеграции с существующими приложениями;
  • Поддержка изолированных окружений и Flatpak;
  • Поддержка плагинов в формате SPA (Simple Plugin API) и возможность создания плагинов, работающих в режиме жесткого реального времени;
  • Гибкая система согласования используемых мультимедийных форматов и выделения буферов;
  • Использование одного фонового процесса для маршрутизации звука и видео. Возможность работы в форме звукового сервера, хаба для предоставления видео приложениям (например, для gnome-shell screencast API) и сервера для управления доступом к аппаратным устройствам захвата видео.

Из изменений по сравнению с веткой 0.3 отмечается включение по умолчанию поддержки jackdbus, позволяющей использовать PipeWire в качестве полноценного клиента звуковой системы JACK. Для ALSA задействовано планирование на базе IRQ в профиле Pro-Audio, позволяющее добиться задержек на уровне JACK. Добавлена поддержка одновременно старой и новой версии webrtc-audio-processing. В pw-cat добавлена поддержка файлов DFF DSD. Добавлена поддержка платформы GNU/Hurd.

Источник: http://www.opennet.ru/opennews/art.shtml?num=60182