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.