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

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

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

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

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

  • Добавлен декодировщик для звукового кодека LDAC, применяемого для передачи высококачественного звука поверх Bluetooth. Для декодирования задействована библиотека libldac.

  • Добавлена опция «bluez5-plc-spandsp» для компенсации потери пакетов при передаче звука поверх Bluetooth, используя возможности библиотеки SpanDSP.

  • Добавлена безопасная реализация функций разбора и создания сериализированных объектов в формате POD (Plain Old Data) в разделяемой памяти.

  • Реализована возможность передачи через метаданные информации о поддержке узлами PipeWire дополнительных возможностей (features), что может использоваться для синхронизации использования расширенной функциональности, такой как поддержка операции RELEASE.

  • Добавлена поддержка прикрепления дополнительных пользовательских данных в передаваемые между узлами команды и события.

  • Реализованы дополнительные вспомогательные функции для создания и разбора форматов сжатия.

  • Выставляемый по умолчанию лимит на максимальное число каналов увеличен до 128. Добавлена возможность переопределения данного лимита на этапе компиляции.

  • Добавлена настройка «audio.layout» для выставления схемы многоканального объёмного звука (например, «audio.layout = 5.1») без необходимости перечисления позиции каналов («audio.position = [ FL, FR, FC, LFE, SL, SR ]»).

  • Добавлен механизм «Capability Params» для согласования возможностей линка на стадии до определения формата и буферов.

  • Добавлена поддержка новых типов цветового представления (colortype) для HDR.

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

  • Добавлена поддержка определения позиции канала через разбор данных EDID.

  • Обеспечена передача в подсистему ALSA карты каналов объемного звука (какой канал справа, какой слева и т.п.).

  • Внесено множество улучшений, связанных с Bluetooth, RTP (Real-time Transport Protocol) и AVB (Audio Video Bridging).

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

  • В систему изменения частоты дискретизации (resampler) добавлена поддержка настраиваемых функций подавления искажений, таких как Blackman и Kaiser. Для повышения точности расчёта фаз задействованы вычисления с фиксированной запятой.

  • Предоставлена возможность применения в графе узлов звуковых фильтров FFmpeg и AI-моделей для обработки звука на базе ONNX, таких как детектор голоса Silero.

  • Прекращена поддержка клиентов, использующих протокол v0, применявшийся в ранних версиях PipeWire.

  • В модуль jack-tunnel добавлена поддержка автоматического подключения портов.

  • Для системы потокового вещания ROC реализована поддержка многотрековых раскладок.

  • Предоставлена возможность изменения лимитов на ресурсы (rlimit) через файл конфигурации.

  • Добавлено свойство «thread.reset-on-fork» для управления сбросом потоков при вызове fork. Для клиентов JACK для повторения поведения JACK можно отключать сброс потоков через выставление «thread.reset-on-fork=false».

  • Добавлен флаг node.exclusive, который гарантирует, что у порта имеется только один источник и один потребитель, что необходимо для реализации механизма Explicit Sync.

  • Добавлен флаг node.reliable для режима гарантированной доставки.

  • В утилиту pw-cat добавлена поддержка MIDI-сообщений SysEx (System Exclusive, для настройки синтезаторов), контейнера midiclip и форматов звука без сжатия. Добавлены опции для выставления форматов звуковых контейнеров и кодеков, а также просмотра списка поддерживаемых контейнеров, кодеков, раскладок объёмного звука и имён каналов.



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

© OpenNet