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
(opennet.ru, основная лента)