Collabora ha anunciado soporte principal en Linux para la decodificación de hardware de vídeo H.264 y H.265 en los sistemas en chip Rockchip RK3588 y RK3576. Este desarrollo pone fin a la dependencia de kernels BSP específicos del proveedor para estas funciones. La actualización incluye nuevos controles de API y correcciones para problemas de hardware.
Los SoC Rockchip RK3588 y RK3576, junto con variantes como el RK3588S y el RK3576J, incorporan los decodificadores de vídeo VDPU381 y VDPU383 respectivamente. Hasta ahora, la decodificación de hardware de los formatos H.264 (AVC) y H.265 (HEVC) requería el kernel BSP de Rockchip. El trabajo reciente de Collabora introduce soporte upstream en Linux mediante una serie de 17 parches que añaden funcionalidad de decodificador, enlaces de device tree y nodos para dispositivos. Los SoC Rockchip RK3588 y RK3576, junto con variantes como el RK3588S y el RK3576J, incorporan los decodificadores de vídeo VDPU381 y VDPU383 respectivamente. Hasta ahora, la decodificación de hardware de los formatos H.264 (AVC) y H.265 (HEVC) requería el kernel BSP de Rockchip. El trabajo reciente de Collabora introduce soporte upstream en Linux mediante una serie de 17 parches que añaden funcionalidad de decodificador, enlaces de device tree y nodos para dispositivos. Las mejoras clave incluyen nuevos controles de API de espacio de usuario V4L2 HEVC para manejar conjuntos de imágenes de referencia (RPS) a corto y largo plazo. Estos controles son esenciales para los decodificadores VDPU381 y VDPU383, a diferencia de otros que pueden obviarlos. Las aplicaciones de espacio de usuario ahora deben proporcionar tablas RPS completas al kernel. El soporte para estos controles se ha añadido a GStreamer 1.28, con integración preliminar en FFmpeg, y facilita la compatibilidad con Vulkan Video Decode. El controlador de decodificador sin estado virtual (visl) también se ha actualizado para rastrear todos los parámetros de control. Una corrección notable aborda un problema de restauración IOMMU: dado que el IOMMU está integrado en los decodificadores, los reinicios borran los mapeos de direcciones, pero el kernel anteriormente los trataba como válidos. El parche restaura los mapeos en caché después del reinicio, afectando a otros bloques IP de Rockchip como el acelerador gráfico 2D RGA. Para la programación de registros, los ingenieros adoptaron un modelo basado en estructuras C en lugar de escrituras ad hoc para garantizar que todos los registros se establezcan en el orden correcto, evitando inconsistencias incluso con valores predeterminados. Este enfoque promueve la exhaustividad y prepara para el uso multi-núcleo. Se espera que los parches se fusionen en Linux 7.1, aproximadamente tres meses después del lanzamiento de Linux 6.19 en febrero. Los esfuerzos futuros de Collabora incluyen decodificación multi-núcleo en el RK3588, soporte AV1 para el RK3576, VP9 para el RK3588 y compatibilidad VDPU346 para SoC RK356X. Hay un resumen detallado disponible en el sitio web de Collabora.