Después de casi un año de desarrollo, se presenta el lanzamiento de GStreamer 1.28, un conjunto de componentes multiplataforma para crear una amplia variedad de aplicaciones multimedia, desde reproductores de medios y convertidores de archivos de audio/video hasta aplicaciones VoIP y sistemas de transmisión en vivo. El código de GStreamer se distribuye bajo la licencia LGPLv2.1. Se desarrollan por separado actualizaciones de los complementos gst-plugins-base, gst-plugins-good, gst-plugins-bad, gst-plugins-ugly, así como el envoltorio gst-libav y el servidor de transmisión gst-rtsp-server. A nivel de API y ABI, este nuevo lanzamiento es retrocompatible con la rama 1.0. Las compilaciones binarias estarán disponibles pronto para Android, iOS, macOS y Windows (en Linux se recomienda usar paquetes de la distribución).
Principales mejoras de GStreamer 1.28:
- Se añadió un nuevo complemento HIP (Interfaz de Computación Heterogénea para Portabilidad) para el soporte de la interfaz de programación desarrollada por AMD para cálculos heterogéneos, en los que además de la CPU se utilizan recursos de cómputo paralelo de la GPU. HIP simplifica la implementación del soporte de diferentes GPU en una única base de código (para la ejecución en GPU AMD se utiliza la pila ROCm, y para GPU NVIDIA se utiliza una capa de traducción a CUDA). El complemento proporciona componentes implementados con HIP para realizar operaciones como mezcla de video, conversiones de un espacio de color a otro, cambio de tamaño de video y organización del intercambio de datos entre la memoria del sistema y la memoria de video. Además, se preparó una biblioteca para integrar el soporte de HIP en las aplicaciones.
- Se añadió soporte para el estándar de codificación de video LCEVC (Codificación de Video de Mejora de Baja Complejidad), que implementa sobre los códecs estándares H.265 y H.266 una capa adicional con metadatos para mejorar la calidad del video. La implementación del codificador y decodificador LCEVC se basa en las bibliotecas del SDK V-Nova.
- Se añadió soporte para las capacidades de la API gráfica Vulkan para acelerar la decodificación de video en formatos AV1 y VP9, así como la codificación de video en formato H.264. Al decodificador de video H.265 basado en Vulkan se le añadió soporte para profundidad de color de 10 bits por canal.
- En el elemento gtkwaylandsink, destinado a la representación utilizando GTK4 y Wayland, se ampliaron las capacidades para trabajar con color, por ejemplo, se añadió soporte para el análisis y establecimiento de metadatos HDR10.
- Se ha añadido un nuevo elemento para separar fuentes de sonido (por ejemplo, separar la voz de la música de fondo), basado en la biblioteca charon-audio, que implementa el método Demucs en Rust. Además, se incluye un complemento de Deepgram para el reconocimiento de voz, escrito en Rust.
- Se han ampliado las capacidades de análisis y reconocimiento de objetos. Se han añadido elementos para combinar y separar el análisis. Se han implementado el clasificador tensor-decoder, el detector de rostros facedetector, el detector de objetos YOLOv8, un elemento para ejecutar y un decodificador para el modelo de reconocimiento de objetos YOLOX. Se ha añadido el elemento tensordecodebin para la conexión automática de decodificadores y un elemento para ejecutar modelos de IA utilizando LiteRT (que sustituye a TensorFlow Lite).
- Se ha añadido un nuevo elemento para decodificar imágenes GIF, escrito en Rust y que soporta animaciones en bucle.
- En el elemento input-selector se ha implementado un mecanismo de conmutación de dos etapas entre flujos de entrada (sinkpad), evitando el estado de carrera durante la conmutación.
- Se ha añadido soporte para la aceleración de hardware en la codificación mediante VA-API en el elemento webrtcsink, así como la posibilidad de renegociar la conexión.
- Se han añadido elementos para combinar y extraer flujos en el formato del estándar de radiodifusión ST-2038.
- Se ha añadido soporte para flujos codificados en el elemento fallbacksrc.
- En el contenedor multimedia FLV, utilizado para la transmisión RTMP, se ha mejorado el soporte para videos H.265 y se ha añadido soporte para audio multicanal.
- Se ha añadido soporte para un cargador basado en udmabuf en el elemento glupload, que permite compartir búferes entre decodificadores/orígenes de software y GPU, motores de visualización (wayland) y otros dispositivos.
- Se ha añadido el elemento qml6 para la renderización utilizando Qt6 QML.
- Se han añadido operaciones de recorte, escalado, rotación y desplazamiento a la biblioteca de trabajo con video.
- Se ha añadido el objeto GstContext, que permite utilizar un grupo compartido de flujos al ejecutar elementos para mejorar el rendimiento de operaciones como composición y transformación de video.
- Se ha añadido el elemento icecastsink para recibir flujos de IceCast, que soporta el formato AAC y está escrito en Rust.
- Se ha añadido un nuevo elemento de clonación de voz de ElevenLabs.
- Se ha añadido un modo en el sintetizador de voz para acelerar la reproducción mientras se mantiene la tonalidad.
- Se ha agregado el elemento vmaf para evaluar la percepción de la calidad del video utilizando el marco VMAF de Netflix.
- Se ha añadido un nuevo plugin de decodificación de sonido MPEG-H, basado en el decodificador Fraunhofer MPEG-H y que soporta la descompresión de contenedores multimedia MP4.
- Se ha ampliado el soporte para subtítulos ocultos (CC — Closed Captions) y el procesamiento de texto.
Fuente: opennet.ru
