После почти года разработки сформирована новая стабильная ветка мультимедийного сервера PipeWire 1.6.0, пришедшего на смену звуковому серверу PulseAudio и отличающегося от него добавлением средств для работы с потоками видео, возможностью обработки звука с минимальными задержками и новой моделью безопасности для управления доступом на уровне отдельных устройств и потоков. Проект по умолчанию применяется в Fedora Linux, RHEL, Ubuntu, Debian, SUSE/openSUSE и многих других дистрибутивах Linux. Код написан на языке Си и распространяется под лицензией MIT.
PipeWire базируется на многопроцессной архитектуре, позволяющей организовать совместный доступ к контенту нескольких приложений. Предоставляются возможности для обработки любых мультимедийных потоков, смешивания и перенаправления потоков с видео, а также управления источниками видео, такими как устройства захвата видео, web-камеры или выводимое приложениями содержимое экрана. PipeWire даёт возможность организовать совместную работу нескольких приложений с веб-камерой и решает проблемы с безопасным захватом содержимого экрана и удалённым доступом к экрану в окружении Wayland.
При использовании в роли звукового сервера, PipeWire может обеспечить минимальные задержки и предоставить функциональность, комбинирующую возможности PulseAudio и JACK, учитывающую потребности систем профессиональной обработки звука, на которую не мог претендовать PulseAudio. PipeWire предлагает расширенную модель безопасности, позволяющую управлять доступом на уровне отдельных устройств и конкретных потоков. Реализованная модель доступа упрощает проброс звука и видео из изолированных контейнеров и в них.
В новой версии:
Источник: https://www.opennet.ru/opennews/art.shtml?num=64830
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 и форматов звука без сжатия. Добавлены опции для выставления форматов звуковых контейнеров и кодеков, а также просмотра списка поддерживаемых контейнеров, кодеков, раскладок объёмного звука и имён каналов.
Источник: https://www.opennet.ru/opennews/art.shtml?num=64830