Después de un año y medio de desarrollo, se lanzó GStreamer 1.20, un conjunto de componentes multiplataforma escrito en C para crear una amplia gama de aplicaciones multimedia, desde reproductores de medios y conversores de archivos de audio/video, hasta aplicaciones de VoIP y sistemas de transmisión en vivo. El código de GStreamer se distribuye bajo la licencia LGPLv2.1. Al mismo tiempo, se lanzan actualizaciones de los complementos gst-plugins-base 1.20, gst-plugins-good 1.20, gst-plugins-bad 1.20, gst-plugins-ugly 1.20, así como el enlace gst-libav 1.20 y el servidor de transmisión gst-rtsp-server 20. A nivel de API y ABI, esta nueva versión es retrocompatible con la rama 1.0. Las compilaciones binarias pronto estarán disponibles para Android, iOS, macOS y Windows (en Linux se recomienda utilizar paquetes del distribuidor).
Mejoras clave de GStreamer 1.20:
- El desarrollo en GitLab ha sido trasladado al uso de un único repositorio común para todos los módulos.
- Se ha agregado una nueva biblioteca de alto nivel GstPlay, que sustituye a la API GstPlayer y ofrece funciones similares para la reproducción de contenido, diferenciándose en que utiliza un bus de mensajes para notificar a las aplicaciones en lugar de señales de GObject.
- Se ha añadido soporte para decodificar información de transparencia en el formato WebM, lo que permite reproducir videos VP8/VP9 con áreas transparentes.
- En los perfiles de codificación se ha añadido soporte para la configuración de propiedades adicionales específicas de las aplicaciones.
- En Compositor se ha implementado el soporte para la transformación y mezcla de video en modo multihilo.
- En las clases depayloader y payloader se ha unificado el soporte para trabajar con encabezados RTP adicionales (Extensiones de encabezado RTP).
- Se ha añadido soporte para el mecanismo de corrección de errores anticipada SMPTE 2022-1 2-D (Forward Error Correction).
- En encodebin y transcodebin se ha implementado un modo de codificación inteligente («smart encoding») para los códecs VP8, VP9 y H.265, en el que la recodificación se realiza solo cuando es necesario, mientras que en el resto del tiempo se transmite el flujo existente.
- Se ha garantizado la compatibilidad del complemento souphttpsrc con libsoup2 y libsoup3.
- Se ha añadido la posibilidad de decodificar datos de entrada a nivel de fotogramas intermedios (sub-frame), lo que permite comenzar la decodificación sin esperar a recibir el fotograma completo. Este soporte de optimización se activa en los decodificadores OpenJPEG JPEG 2000, FFmpeg H.264 y OpenMAX H.264/H.265.
- Al decodificar video para los protocolos RTP, WebRTC y RTSP, se garantiza el procesamiento automático de la pérdida de paquetes, corrupción de datos y solicitudes de cuadros clave.
- Se ha añadido soporte para cambiar los datos del códec sobre la marcha en empaquetadores de contenedores multimedia mp4 y Matroska, lo que permite modificar el perfil, nivel y resolución para las secuencias de entrada H.264/H.265.
- Se ha añadido un modo para crear contenedores multimedia mp4 fragmentados.
- Se ha añadido soporte de audio al puerto basado en WPE (WebKit Port for Embedded).
- Se ha añadido la posibilidad de utilizar CUDA para la conversión de espacio de color, escalado de elementos y carga de elementos.
- Se ha añadido soporte para la memoria NVMM (NVIDIA Memory Module) en los elementos OpenGL glupload y gldownload.
- Se ha mejorado el soporte para WebRTC.
- Se ha propuesto un nuevo plugin para VA-API (Video Acceleration API), que admite más decodificadores y elementos de postprocesamiento.
- Se ha añadido soporte para eventos en la API AppSink, además de búferes y listas de búferes.
- Se han añadido configuraciones adicionales para las colas internas en AppSrc.
- Se han actualizado las vinculaciones en Rust y se han añadido 26 nuevos plugins escritos en Rust (gst-plugins-rs).
- Se han añadido los elementos aesdec y aesenc para cifrado y descifrado utilizando el algoritmo AES.
- Se han añadido los elementos fakeaudiosink y videocodectestsink para pruebas y depuración.
- Se han mejorado las herramientas para crear compilaciones minimalistas de GStreamer.
- Se ha añadido la posibilidad de compilar con FFmpeg 5.0.
- Se han implementado variantes de códecs MPEG-2 y VP9 para Linux que funcionan sin mantener estado (Stateless).
- Para Windows, se ha añadido soporte para AV1 y MPEG-2 en el decodificador basado en Direct3D11/DXVA.
Fuente: opennet.ru
