Article de reference

API d'accélération vidéo

L'API d'accélération vidéo ( VA-API ) est une interface de programmation d'applications open source qui permet à des applications telles que le lecteur multimédia VLC ou GStream...

interface de programmation d'applications open source qui permet à des applications telles que le lecteur multimédia VLC ou GStreamer d'utiliser les capacités d'accélération vidéo matérielle, généralement fournies par le processeur graphique (GPU). Elle est implémentée par la bibliothèque libre et open source libva , associée à un pilote matériel spécifique, généralement fourni avec le pilote du GPU.

L'interface de décodage/encodage vidéo VA-API est indépendante de la plateforme et du système de fenêtrage, mais elle est principalement destinée à l'infrastructure de rendu direct (DRI) du système X Window sur les systèmes d'exploitation de type Unix (notamment Linux , FreeBSD , Solaris ) et Android . Elle peut toutefois potentiellement être utilisée avec les sous-systèmes de mémoire tampon d' images et graphiques directs pour la sortie vidéo. Le traitement accéléré comprend la prise en charge du décodage vidéo , de l'encodage vidéo , du mélange de sous-images et du rendu.

La spécification VA-API a été initialement conçue par Intel pour sa gamme de GPU GMA (Graphics Media Accelerator), dans le but précis de remplacer à terme la norme XvMC comme équivalent multiplateforme Unix par défaut de l'API d'accélération vidéo DirectX (DxVA) de Microsoft Windows. Cependant, cette API n'est plus limitée aux matériels ou GPU spécifiques à Intel. D'autres fabricants de matériel peuvent librement utiliser cette API ouverte pour le traitement vidéo accéléré par le matériel, sans avoir à payer de redevances.

Exemple de sortie vainfo, montrant les codecs vidéo pris en charge pour l'accélération VA-API

L'objectif principal de VA-API est de permettre le décodage vidéo accéléré par le matériel à différents points d'entrée ( VLD , IDCT , compensation de mouvement , déblocage ) pour les normes de codage actuelles ( MPEG-2 , MPEG-4 ASP / H.263 , MPEG-4 AVC/H.264 , H.265/HEVC et VC-1/WMV3 ). L'extension de XvMC a été envisagée, mais étant donné sa conception initiale limitée à la compensation de mouvement MPEG-2 , il s'est avéré plus judicieux de concevoir une interface entièrement nouvelle capable d'exploiter pleinement les capacités de décodage vidéo des GPU actuels .

Matériel et pilotes pris en charge

En 2022, VA-API est pris en charge nativement par :

Codecs vidéo pris en charge

VA-API prend actuellement en charge ces codecs vidéo dans sa version principale officielle, mais veuillez noter que les codecs vidéo pris en charge dépendent du matériel et des capacités du pilote.

  • Profil principal d'accélération du décodage MPEG-2
  • Profil avancé d'accélération du décodage VC-1 / WMV3
  • Accélération du décodage MPEG-4 Part 2 (H.263) (également appelé MPEG-4 SP / MPEG-4 ASP, plus communément connu sous le nom de Xvid )
  • Accélération de l'encodage H.264 AVC Profil principal
  • Accélération du décodage H.264 AVC à profil élevé
    • Décodage matériel à longueur variable H.264/AVC (VLD) - CABAC
    • Décodage matériel à longueur variable H.264/AVC (VLD) - CAVLC
    • Transformation inverse matérielle H.264 / AVC (IT)
    • Compensation matérielle de mouvement H.264 / AVC (HWMC)
    • Déblocage matériel en boucle H.264/AVC (ILDB)
  • Accélération de l'encodage H.265/HEVC
  • Accélération du décodage H.265/HEVC
  • Accélération de l'encodage VP9 8 bits
  • Accélération du décodage VP9 8 bits et 10 bits
  • Accélération de l'encodage AV1 8 bits et 10 bits
  • Accélération du décodage AV1 8 bits et 10 bits

Processus pouvant être accélérés grâce à l'API VA

Les processus de décodage et de post-traitement vidéo peuvent être déportés et accélérés si les pilotes de périphériques et le matériel GPU les prennent en charge :

architecture logicielle

Architecture de l'API d'accélération vidéo

L'interface actuelle est indépendante du système de fenêtrage, ce qui permet son utilisation potentielle avec des sous-systèmes graphiques autres que l' infrastructure de rendu direct (DRI) du système X Window , comme le rendu direct avec le framebuffer . Elle est également compatible avec les bibliothèques DRM (Direct Rendering Manager) tierces . En résumé, il s'agit d'un mécanisme permettant de transmettre différents types de tampons de données de l'application au GPU pour le décodage ou l'encodage d'un flux binaire compressé .

Logiciel prenant en charge l'API VA

Un journal de Firefox montrant l'utilisation de l'API VA pour l'accélération du décodage vidéo