Extensiones de video de Vulkan para codificación acelerada de H.264 y H.265
Las nuevas extensiones Vulkan Video de Khronos para codificación/decodificación de hardware H.264 y H.265 están generando esperanzas de una API única y multiplataforma que podría simplificar la aceleración de video en GPUs y sistemas operativos, especialmente en Linux. Los comentaristas comparan el potencial de Vulkan con rutas existentes específicas del sistema operativo y del proveedor como VA-API, Windows Media Foundation, NVDEC/NVENC y otras, señalando lagunas en el soporte de controladores, problemas de patentes de códecs y fragmentación de plataformas (particularmente en macOS y Android). También hay interés en el próximo soporte para AV1 y en cuán bien pueden paralelizarse los códecs modernos, tanto en bloques de hardware dedicados como en decodificadores por software como dav1d.
Alcance y objetivos de Vulkan Video
- Utiliza bloques existentes de codificación/decodificación de función fija en GPUs/SoCs, hardware similar al que apuntan VAAPI, NVENC/NVDEC, etc.
- Se presenta como una API de video multiplataforma y de múltiples proveedores, que potencialmente cubriría Intel, AMD, Nvidia, SoCs móviles y dispositivos pequeños (por ejemplo, Raspberry Pi).
- Se considera especialmente prometedor para Linux, donde no existe una API multimedia nativa unificada y la fragmentación de controladores es un problema.
Comparación con las APIs existentes (VAAPI, DXVA, etc.)
- Vulkan Video y VAAPI abordan el mismo hardware; las diferencias están en el diseño de la API:
- Vulkan es más explícito, menos específico de códec y puede integrarse limpiamente con el renderizado Vulkan (más fácil hacer zero-copy a texturas).
- VAAPI se usa ampliamente en Linux, con buen soporte de Intel/AMD y algunos shims de terceros para Nvidia, pero no oficialmente por Nvidia.
- Algunos sostienen que VAAPI ya no es “solo de Intel”; otros enfatizan que sigue siendo específico del proveedor/plataforma, al igual que VDPAU/NVDEC/AMF.
- Los escépticos dicen que migrar OBS/Firefox desde APIs nativas maduras del sistema operativo (DXVA/WMF, VideoToolbox, MediaCodec) añade complejidad, especialmente porque macOS y Android carecen de Vulkan Video y Vulkan en Windows es secundario frente a DirectX.
Firefox y la decodificación por hardware en Linux
- Firefox ya tiene decodificación por hardware en Linux mediante ffmpeg+VAAPI, incluso en Intel y AMD; Nvidia sigue siendo problemática sin shims no oficiales.
- Los usuarios pueden verificar el uso mediante la sección Media de about:support o herramientas específicas de la GPU.
- Mesa desactiva por defecto los códecs sujetos a patentes; muchas distribuciones los mantienen desactivados para evitar riesgo legal, así que H.264/H.265 pueden requerir pasos adicionales, mientras que AV1 generalmente funciona de fábrica.
Problemas de despliegue y usabilidad de controladores
- En Windows, los controladores proporcionados por OEM/Microsoft a menudo se instalan sin un runtime de Vulkan funcional por defecto; DirectX funciona, pero Vulkan puede fallar hasta que los usuarios instalan un runtime adicional, lo cual es aceptable para juegos pero problemático para aplicaciones generales.
Hardware y paralelismo en los códecs
- “Decodificación por software” significa basada en CPU; “decodificación por hardware” usa unidades de función fija conectadas a GPUs/iGPUs (por ejemplo, Quick Sync), no núcleos generales de la GPU.
- La decodificación de video es en parte inherentemente secuencial (por ejemplo, decodificación de entropía, cadenas de predicción de movimiento), pero los códecs modernos (H.265, AV1) ofrecen tiles/slices para el paralelismo, intercambiando parte de la eficiencia de compresión por decodificación/codificación multihilo.