PipeWire 1.0 ya está disponible para hacer que el servidor de transmisión de multimedia pase a estar en fase “estable”, aunque en la actualidad hasta Debian Stable lo emplea como servidor de sonido al menos con el escritorio GNOME. A pesar de lo que tradicionalmente suele suponer el salto a la versión 1.0, en este caso nos encontramos con una evolución que no supone, al menos aparentemente, un punto de inflexión para el proyecto.
PipeWire es descrito por muchos como un servidor de sonido que está destinado a suceder a PulseAudio y JACK, pero la realidad es que es algo más. PipeWire nació hace años como PulseVideo y fue concebido en un primer momento para la transmisión de vídeo, pero fue evolucionando con el paso del tiempo para adquirir propiedades de transmisión de audio y ser lo que hoy es. Hasta cierto punto se puede entender que fue creado para cubrir una de las carencias más destacadas de Wayland: la falta de un mecanismo estándar para la captura de la pantalla.
Decir “transmisión” puede sonar a muchos más YouTube y Twitch que a un daemon del sistema operativo, así que vamos a dar forma a ese término ajustándolo al contexto que nos ocupa. La transmisión de audio se refiere a la emisión de sonido empleando los típicos altavoces y auriculares y a la captura mediante un micrófono. Por otro lado, la transmisión de imágenes se refiere principalmente a la captura que se puede hacer con PipeWire desde aplicaciones como OBS Studio y Kooha. Con estos ejemplos ya debería quedar clara la definición de “servidor de transmisión de multimedia”.
En lo que respecta a PipeWire 1.0 y como ya hemos dicho, nos encontramos con más evolución que revolución. Las principales novedades son el manejo de llamadas simultáneas a jack_port_get_buffer()
en la capa de compatibilidad con JACK como forma de mejorar el soporte para Ardour, la mejora del reporte del tiempo (menos jitter) en ALSA cuando se usa IRQ, la corrección de una fuga de MEMFD/DMA-BUF al cargar los búferes mientras se apaga y muchas mejoras en la documentación.
Otras cosas que se pueden destacar son la corrección de una posible violación de segmento (segfault) cuando se copian estructuras de mezcla, la evitación de carreras en setrlimit
dentro del módulo module-rt
, la corrección de una filtración de memoria en la cadena de filtros, el establecimiento de rtp.ptime
en los emisores y no en los receptores, unos módulos de ROC que han sido portados a la versión 0.3 y para el soporte a través de Bluetooth hay mejoras en la compatibilidad y en el propio códec LC3.
Para la capa de compatibilidad con PulseAudio se ha corregido la emisión de eventos cuando se cambia el estado de un sumidero o fuente, mientras que para la compatibilidad con JACK, además de lo ya mencionado, se ha mejorado el manejo del transporte y el tiempo, la reutilización del búfer ha sido optimizada y se evita la enumeración de parámetros del puerto que no se va a utilizar.
Y estas son todas las novedades de PipeWire 1.0, un servidor que se espera empiece a despegar de verdad con el lanzamiento de Ubuntu 24.04 LTS, sistema que se espera lo emplee por defecto tanto para la captura de la pantalla como para el soporte de sonido. Si no se quiere pasar por el tortuoso proceso de compilación, la forma más fácil de obtenerlo es empleando una distribución bleeding edge como Fedora, openSUSE Tumbleweed, openSUSE MicroOS o Arch Linux, a las cuales debería llegar como una actualización estándar.
Con motivo de este lanzamiento, en Fedora Magazine han entrevistado a Wim Tymans, empleado de Red Hat y el considerado como el “padre” de PipeWire, un software que apunta a ser uno de los grandes puntales del escritorio Linux, sobre todo tras la consolidación definitiva de Wayland.