Video Acceleration API ( VA-API ) est une interface de programmation d'application 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 l' unité de traitement graphique (GPU). Elle est implémentée par la bibliothèque libre et open source libva , associée à un pilote spécifique au matériel, généralement fourni avec le pilote GPU.
L'interface de décodage/encodage vidéo VA-API est indépendante de la plate-forme et du système de fenêtres, mais elle est principalement destinée à l'infrastructure de rendu direct (DRI) dans X Window System sur les systèmes d'exploitation de type Unix (y compris Linux , FreeBSD , Solaris ) et Android . Cependant, elle peut également être utilisée avec un tampon d'image direct et des sous-systèmes graphiques 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é conçue à l'origine par Intel pour sa série de matériels GPU GMA (Graphics Media Accelerator) dans le but spécifique de remplacer à terme la norme XvMC comme équivalent multiplateforme Unix par défaut de l'API Microsoft Windows DirectX Video Acceleration (DxVA) , mais aujourd'hui, l'API n'est plus limitée au matériel ou aux GPU spécifiques à Intel. D'autres matériels et fabricants peuvent utiliser librement cette API standard ouverte pour le traitement vidéo accéléré par le matériel avec leur propre matériel sans payer de redevance.
Aperçu

La principale motivation 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 en raison de sa conception originale pour MPEG-2 MotionComp uniquement, il était plus logique de concevoir une interface à partir de zéro qui puisse exposer pleinement les capacités de décodage vidéo des GPU actuels .
Matériel et pilotes pris en charge
Depuis 2022, VA-API est nativement pris en charge par :
- Pilotes open source Intel Quick Sync pour Linux
- Pilotes open source Mesa pour cartes graphiques AMD et Nvidia
- Pilotes AMDGPU-PRO pour cartes graphiques AMD sous Linux
- libva-vdpau-driver pour les cartes prises en charge par VDPAU
- Implémentations Direct3D 12 avec le pilote VAOn12
Codecs vidéo pris en charge
VA-API prend actuellement en charge ces codecs vidéo dans la version officielle principale, mais notez que les codecs vidéo exactement pris en charge dépendent du matériel et des capacités du pilote.
- Accélération du décodage MPEG-2 Profil principal
- Profil avancé d'accélération de décodage VC-1 / WMV3
- Accélération du décodage MPEG-4 Partie 2 (H.263) (également appelé MPEG-4 SP / MPEG-4 ASP, plus communément appelé Xvid )
- Profil principal d'accélération du codage H.264 AVC
- Accélération du décodage H.264 AVC High Profile
- Décodage de longueur variable matériel H.264 / AVC (VLD) - CABAC
- Décodage de longueur variable matériel H.264 / AVC (VLD) - CAVLC
- Transformée inverse matérielle H.264 / AVC (IT)
- Compensation de mouvement matérielle H.264 / AVC (HWMC)
- Déblocage matériel en boucle H.264/AVC (ILDB)
- Accélération du codage H.265/HEVC
- Accélération du décodage H.265/HEVC
- Accélération du codage VP9 8 bits
- Accélération du décodage VP9 8 bits et 10 bits
- Accélération du codage 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 avec VA-API
Processus de décodage vidéo et de post-traitement qui peuvent être déchargés et accélérés si les pilotes de périphérique et le matériel GPU les prennent en charge :
- Compensation de mouvement
- Transformée en cosinus discrète inverse
- Filtre de déblocage en boucle
- Prédiction intra-image
- Décodage à longueur variable , plus communément appelé accélération au niveau des tranches
- Traitement de flux binaire ( codage à longueur variable adaptatif au contexte / codage arithmétique binaire adaptatif au contexte )
Architecture logicielle

L'interface actuelle est indépendante du système de fenêtrage, de sorte qu'elle peut potentiellement être utilisée avec d'autres sous-systèmes graphiques que le DRI (Direct Rendering Infrastructure) dans X Window System , comme le direct avec framebuffer , et elle peut fonctionner avec des bibliothèques DRM (Direct Rendering Manager) tierces . En un mot, il s'agit d'un schéma permettant de transmettre différents types de tampons de données de l'application au GPU pour décoder ou encoder un flux binaire compressé .
Logiciel prenant en charge VA-API

- Chrome
- Client DVR Bluecherry (à partir de la version 2.2.6)
- datarhei Restreamer diffusion vidéo en direct en temps réel
- Serveur multimédia Emby (à partir de la version 3.0.6400)
- ffmpeg , un outil de ligne de commande du projet FFmpeg (à partir de 3.1)
- Firefox (sur Wayland depuis la version 78 et sur X11 depuis la version 80)
- Fluendo
- NVR de la frégate
- Lecteur Flash / SWF Gnash
- GStreamer via gstreamer-vaapi
- Lecteur multimédia Helix ( Linux )
- Serveur multimédia Jellyfin
- Kodi (anciennement XBMC Media Center) ( Linux )
- Kodibuntu (anciennement XBMC Live) (système d'exploitation Linux Live CD/USB)
- libavcodec
- MPlayer avec des patchs personnalisés et son fork mpv (natif)
- MythTV (à partir de la version 0.25)
- Studio OBS
- OpenShot
- Lecteur multimédia VLC (à partir de la version 1.1.0)
- Xine (via la bibliothèque « xine-lib-vaapi ») depuis la version 1.2.3