GStreamer 1.26.5 introduce arreglos clave en audioconvert, overlays, V4L2, VA y Vulkan
GStreamer 1.26.5 ya está disponible como actualización de mantenimiento dentro de la rama estable 1.26, con foco absoluto en estabilidad, regresiones corregidas y mejoras prácticas en áreas que los usuarios usan a diario. Es una versión de corrección de fallos que se puede instalar con tranquilidad sobre cualquier 1.26.x, y que además llega con pequeños añadidos muy útiles, desde soporte para JPEG XS en elementos concretos hasta ajustes en la integración con Windows, V4L2, Vulkan o el monitor de dispositivos.
Esta entrega se apoya en el gran salto que supuso 1.26.0, que añadió nuevas tecnologías (H.266, LCEVC, JPEG XS), mejoras profundas en streaming adaptativo, subtitulado y trazado, más integración con Vulkan, OpenGL, CUDA, Direct3D12 o VA, y un sinfín de elementos nuevos escritos en C y Rust. En las siguientes líneas repasamos de forma detallada todo lo que trae 1.26.5 y recordamos lo más importante de toda la serie 1.26 para que tengas una visión completa antes de actualizar.
Qué es GStreamer 1.26.5 y por qué te interesa
La versión 1.26.5 es el quinto bugfix de la serie 1.26, publicada el 7 de agosto, centrada en fiabilidad. Destacan correcciones y mejoras que resuelven problemas reales detectados en producción: audioconvert arregla una regresión de negociación de caps con matrices de mezcla, cea608overlay y cea708overlay aceptan buffers de memoria de GPU cuando el downstream soporta overlay composition, y d3d12screencapture pule tanto la fuente como el proveedor de dispositivos para un comportamiento más robusto.
En la parte de reproducción y descubrimiento se han afinado puntos críticos: decodebin3 ya no falla ante flujos con metadatos ONVIF, y uridecodebin3 deja de arriesgar un crash al añadir URIs en mensajes (por ejemplo, si falta un decodificador). V4L2 elimina una fuga de memoria en cambios de resolución dinámicos, y los codificadores VA reciben arreglos para casos límite.
Hay añadidos útiles de códec: videorate e imagefreeze ahora pueden trabajar con JPEG XS, lo que facilita pipelines de sincronización y generación de frames con este formato. Vulkan recibe arreglo de integración, wasapi2 mejora el monitor de dispositivos en Windows, threadshare y rtpbin2 incorporan numerosas correcciones y gst-device-monitor-1.0 gana usabilidad desde la línea de comandos. Además, en servicios cloud se añade brevedad a awstranslate y una opción para particionar oradores con awstranscriber2, junto con una nueva propiedad mask-profanities en Speechmatics para tratar lenguaje ofensivo en transcripción.
Recordatorio: el gran salto de la 1.26.0 (características clave)
La 1.26.0 (11 de marzo) inauguró mejoras de enorme calado sobre la API 1.x, con especial atención a nuevos códecs, subtitulado, streaming, analítica y aceleración. Entre lo más destacado:
- Soporte del códec VVC H.266: parseador, decodificador base para hw, decodificación por VA‑API, acceso al decodificador FFmpeg y mux/demux en MP4, Matroska y MPEG‑TS; en Rust se añadió un decodificador basado en VVdeC.
- JPEG XS: elementos de codificación y decodificación basados en SVT JPEG XS con mux/demux en MPEG‑TS, soportando entrelazado y progresivo.
- LCEVC: elementos de codificación/decodificación sobre SDK de V‑Nova y soporte en h264parse para extraer la capa de mejora con lcevch264decodebin.
- Subtítulos y closed captions: extractores/insertores para H.264/H.265, cea708overlay de Rust, cea708mux, tttocea708, mejoras en cccombiner, y cdpserviceinject para CDP.
- HLS/DASH: client adaptivedemux2 con soporte file://, backoff y reintentos, hlscmafsink y hlssink3 para CMAF/TS, hlsmultivariantsink, y arreglos en dashsink.
- splitmuxsrc/sink con carga perezosa y fragmentos dinámicos, señales de add‑fragment y política de archivos abiertos.
- MPEG‑TS más capaz
- MP4/Matroska: VVC, Hap, Lagarith, raw video, etiquetas de rotación y flips, trick mode en qtdemux y soporte ISO raw video.
- SMPTE 2038 en Rust para metadatos auxiliares (demux/mux y conversión de CC).
- Analítica: nuevo GstTensorMeta, relaciones N a N, máscaras de segmentación, onvifmetadataextractor, originalbuffer y relationmeta, además de bindings de Python más pulidos.
- Aceleración y gráficos: grandes mejoras en Vulkan y OpenGL (v210, YUY2/UYVY, Y444_10/16, importación de DMABuf), QML con importación directa de DMABuf, CUDA con compositor, nvenc AV1, Jetson NVMM y precompilado de kernels, Direct3D12 con d3d12videosink, d3d12swapchainsink, d3d12deinterlace, IPC GPU cero‑copia, y captura HDR correcta.
- Tarjetas de captura: mejoras en AJA y Decklink (HDR PQ/HLG y planificación de frames).
- RTP/RTSP: rtspsrc con claves MIKEY gestionadas por cliente, nuevos modos de sync en rtpbin, jitterbuffer con estado RFC7273, mejoras en rtph265depay y regeneración de timestamps en rtppassthroughpay, y nuevo rtpbin2 en Rust.
- WebRTC: webrtcbin con rollbacks básicos y mejoras; webrtcsink/src con más encoders, MSE y sincronía NTP/PTP; WHEP/WHIP ya presentes en el ecosistema y elementos de LiveKit/Kinesis disponibles en releases posteriores 1.26.x.
- Nuevos elementos como webview2src, extractores CC para H.264/H.265, h266parse, svtjpegxsenc/dec y múltiples piezas en VA y Rust.
Cambios técnicos finos que marcan la diferencia
Contenedores y transporte
En MP4 y Matroska se añadió soporte robusto a VVC, formatos niche como Hap/Lagarith y raw video, además de un manejo correcto de rotaciones y flips por media y por pista. MPEG‑TS ahora puede muxear y desmuxear VVC, JPEG‑XS, VP9 y AV1 (con mapeos custom), meter ID3 y SMPTE 302M, y tratar M2TS de 192 bytes. Para directos, mpegtslivesrc aporta un reloj basado en PCR.
En streaming adaptativo la client adaptivedemux2 evita flushes espurios en vivo, admite URIs file:// y reintentos con backoff, y dashsink corrige duraciones de period para MPD dinámicos. HLS gana nuevos sinks enfocados a CMAF y a escalar variantes.
Subtítulos, CC y SMPTE 2038
Los extractores/insertores para H.264/H.265 manipulan CC en orden de presentación sin decodificar (útil para pipelines de procesado sin recodificar), y la familia Rust incorpora st2038ancdemux/mux y convertidores a CC. cea708overlay sustituye a cc708overlay con soporte moderno y aceptación de buffers de GPU en 1.26.5.
Analítica y metadatos
GstTensorMeta y nuevas relaciones N‑a‑N facilitan flujos de visión por computador complejos, con máscaras, conversiones ONVIF y plugins de utilidad para preservar buffers originales. Bindings de Python mejorados agilizan iteración y edición de metas analíticas.
Aceleración: Vulkan, OpenGL, CUDA y D3D12
Vulkan mejora memoria no coherente, colorimetrías y pools, además de perfiles H.264/H.265 y encoder más ágil. OpenGL ensancha conversiones (v210, YUY2/UYVY, Y444 de alta profundidad) y DMABuf. CUDA suma compositor, nvav1enc, soporte Jetson NVMM y precompilado. Direct3D12 estrena biblioteca pública, sinks con color balance, texturas con mipmaps, IPC cero‑copia y deinterlazado portable.
RTP, RTSP y WebRTC
RTSP gestiona MIKEY del lado cliente (útil con cámaras Axis), rtpbin gana modos never/ntp, y jitterbuffer expone estado RFC7273. Se mejora la solicitud de keyframes en H.265 RTP y regeneración de timestamps en pasarela. Rust aporta rtpbin2 y payloaders para AC3, AMR, JPEG, KLV, MPEG‑TS, MP4A/G, Opus, PCMU/A, VP8/9. En WebRTC se afinan rollbacks, niveles de audio, retransmisiones, y a lo largo de 1.26.x se han añadido fuentes de Janus, LiveKit y WHEP.
API, rendimiento y trazas
GstIdStr sustituye GQuark en estructuras/caps para evitar fugas y mejorar rendimiento comparando cadenas cortas; GstVecDeque entra en core para colas más simples y eficientes. Se amplían utilidades de Audio/Video (reorderings, fast paths v210⇄I420_10/I422_10), y se suman nuevos tracers (memoria, tiempos de push y PCAP). El sistema de logging añade detalles ricos a mensajes (URI, stream‑id), y se optimiza la escritura de DOTs.