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

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

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

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

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

  • В модель обработки мультимедийных потоков на основании графа узлов добавлена поддержка асинхронной обработки, при которой граф узлов не блокируется при отсутствии вывода от определённого узла, а продолжает обработку, используя вывод, полученный в прошлом цикле. Таким образом, ценой задержки в один цикл удаётся избежать ситуации, когда один узел блокирует работу остальных узлов в графе.

  • Реализована концепция групп синхронизированных узлов (node.sync-group), позволяющая создавать группы узлов, одновременно активируемых планировщиком. Функция может использоваться для одновременного планирования активации узлов при запуске транспорта JACK.

  • Улучшен вывод сведений об ошибках в файле конфигурации, добавлено упоминание места, где допущена ошибка в настройках (номер строки и позиция в строке).

  • Добавлена поддержка технологии Explicit Sync, позволяющей приложениям информировать композитный менеджер на базе протокола Wayland о готовности вывода кадра на экран, что даёт возможность добиться снижения задержек и избавиться от появления артефактов при выводе графики. В частности, Explicit Sync решает проблемы с нарушением вывода и подвисаниями на системах с GPU NVIDIA и включённой поддержкой Wayland.

  • Реализована возможность определения обязательных метаданных при согласовании параметров буфера, которые используются для обеспечения поддержки «Explicit Sync».

  • Добавлена поддержка создания и использования нескольких циклов обработки данных (data-loop) в клиенте и сервере. В циклы обработки данных добавлены возможности для привязки к определённым ядрам CPU и выставления приоритетов.

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

  • Приняты патчи для обработки устройств, помеченных как конфликтующие через ALSA UCM (Use Case Manager).

  • Добавлен модуль snapcast-discover для потоковой передачи контента в серверы SnapСast.
  • Переработана логика связывания пиров (узлов в графе потоков данных, выступающих источниками или приёмниками данных).



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

OpenNet прочитано 3499 раз