Después de siete meses de desarrollo, se ha formado una nueva rama estable del servidor multimedia PipeWire 1.2.0, que reemplaza al servidor de sonido PulseAudio y se diferencia de este al añadir herramientas para trabajar con flujos de vídeo, la capacidad de procesar audio con mínima latencia y un nuevo modelo de seguridad para gestionar el acceso a nivel de dispositivos individuales y flujos. El proyecto cuenta con el apoyo de GNOME y se implementa por defecto en Fedora Linux, RHEL, Ubuntu, Debian, SUSE/openSUSE y muchas otras distribuciones de Linux. El código del proyecto está escrito en C y se distribuye bajo la licencia LGPLv2.1.
PipeWire se basa en una arquitectura multiprocesal que permite el acceso compartido al contenido entre múltiples aplicaciones.
Se ofrecen capacidades para procesar cualquier tipo de flujos multimedia, mezclar y redirigir flujos de vídeo, así como gestionar fuentes de vídeo, como dispositivos de captura de vídeo, cámaras web o contenido de pantalla generado por aplicaciones. Por ejemplo, PipeWire permite la colaboración de varias aplicaciones con una cámara web y soluciona problemas relacionados con la captura segura del contenido de la pantalla y el acceso remoto a la pantalla en un entorno Wayland.
Al utilizarse como servidor de sonido, PipeWire puede proporcionar latencias mínimas y ofrecer funcionalidad que combina las capacidades de PulseAudio y JACK, tomando en cuenta las necesidades de los sistemas de procesamiento de sonido profesional, lo que PulseAudio no podía lograr. Además, PipeWire ofrece un modelo de seguridad avanzado que permite gestionar el acceso a nivel de dispositivos individuales y flujos específicos, facilitando el paso de audio y vídeo desde y hacia contenedores aislados. Uno de los principales objetivos es el soporte de aplicaciones autónomas en formato Flatpak y su funcionamiento en un stack gráfico basado en Wayland.
En la nueva versión:
- Al modelo de procesamiento de flujos de datos basado en un gráfico de nodos se le ha añadido soporte para el procesamiento asíncrono, en el cual el gráfico de nodos no se bloquea ante la falta de salida de un nodo determinado, sino que continúa operando utilizando datos de un nodo obtenidos en el ciclo anterior. De esta manera, a costa de una latencia de un ciclo, se evita que un nodo bloquee el funcionamiento de otros nodos en el gráfico.
- Se ha implementado el concepto de grupos de nodos sincronizados (node.sync-group), que permite crear grupos de nodos que se activan simultáneamente por el programador. Esta función se puede utilizar para planificar la activación de los nodos al iniciar el transporte JACK.
- Se ha mejorado la salida de información sobre errores en el archivo de configuración, añadiendo una mención del lugar donde se produjo el error en la configuración (número de línea y posición en la línea).
- Se ha añadido soporte para la tecnología Explicit Sync, que permite a las aplicaciones informar al gestor de composición basado en el protocolo Wayland sobre la disponibilidad de la salida de un fotograma en la pantalla, lo que permite reducir la latencia y eliminar la aparición de artefactos en la salida gráfica. En particular, Explicit Sync resuelve problemas de interrupción en la salida y bloqueos en sistemas con GPU NVIDIA y soporte de Wayland habilitado.
- Se ha implementado la capacidad de determinar metadatos obligatorios al negociar parámetros de búfer que se utilizan para garantizar el soporte de "Explicit Sync".
- Se ha añadido soporte para crear y utilizar múltiples ciclos de procesamiento de datos (data-loop) en el cliente y servidor. Se han incorporado funcionalidades a los ciclos de procesamiento de datos para enlazarlos a núcleos de CPU específicos y establecer prioridades.
- Se ha proporcionado la capacidad de cambiar los niveles de depuración que controlan la salida de información en el registro sin necesidad de reiniciar, utilizando metadatos.
- Se ha replanteado la lógica de unión de pares (nodos en el grafo de flujo de datos, que definen fuentes o receptores externos de datos).
- Se han aceptado parches para el manejo de dispositivos marcados como conflictivos a través de ALSA UCM (Use Case Manager).
- Se ha añadido el módulo snapcast-discover para la transmisión de contenido en servidores SnapCast.
Fuente: opennet.ru
