Se integró al código principal del proyecto multimedia FFmpeg, durante el fin de semana, el soporte para Frame Rate Up-Conversion (FRUC), que hace uso de la extensión Vulkan de NVIDIA Optical Flow.
¿Qué hace exactamente FRUC?
Frame Rate Up-Conversion permite generar video con una tasa de cuadros más alta a partir de contenido con tasa más baja, insertando cuadros interpolados. FRUC contribuye a mejorar la calidad visual percibida.
La técnica no inventa información: estima el movimiento entre dos cuadros consecutivos y construye uno intermedio a partir de ese campo de desplazamiento. Es el mismo principio detrás de la interpolación de movimiento que traen los televisores, con la diferencia de que acá el trabajo se resuelve en el hardware dedicado de la tarjeta gráfica en vez de en un chip del panel.
NVIDIA Optical Flow viene desde hace varios años, desde la generación Ada de sus GPU, soportando esta funcionalidad acelerada por hardware. FFmpeg, en cambio, recién ahora suma soporte para FRUC usando la versión Vulkan de NVIDIA Optical Flow.
Hay más detalles sobre el FRUC de NVIDIA en su documentación oficial.
¿Qué se necesita para usarlo?
Este soporte de FRUC en FFmpeg depende de que el controlador de la API Vulkan subyacente soporte la extensión VK_NV_optical_flow. El código se integró el sábado al repositorio Git de FFmpeg en una serie de commits identificados como fruc_vulkan.
Esa dependencia es la letra chica que conviene mirar antes de entusiasmarse. Al apoyarse en una extensión propietaria de Vulkan y no en cómputo genérico, la función queda amarrada a las GPU de NVIDIA con controladores que la expongan, y no se traslada a tarjetas AMD o Intel aunque estas también soporten Vulkan.
La rama de filtros RTX que apareció y desapareció
Casi al mismo tiempo, el autor del reporte detectó este commit a través del canal RSS de FFmpeg, que integraba también la rama de filtros de video RTX de NVIDIA. Ese código, sin embargo, parece haber sido revertido: a la mañana siguiente ya no aparecía en la actividad reciente del repositorio.
Esa integración agregaba filtros para varias tecnologías de NVIDIA:
- RTX Dynamic Vibrance, a través de la red DeepDVC ejecutada sobre CUDA
- Escalado de video con la red de superresolución DLPP
- Escalado con la red NGX Image Super Resolution
- Generación de cuadros con NVIDIA Smooth Motion
- RTX TrueHDR
- RTX Video Super Resolution
El contraste entre ambos movimientos es lo interesante de la semana: la interpolación de cuadros por Vulkan se quedó en el repositorio principal y el paquete de filtros RTX sobre CUDA no. Para quien mantiene una cadena de procesamiento de video en Linux, esa diferencia importa más que la lista de funciones, porque solo el código que sobrevive en la rama principal termina llegando a las versiones empaquetadas de las distribuciones.




