Video Acceleration API

Video Acceleration API (VA API)

Video Acceleration API (abrégé en VA API, VA-API ou VAAPI) est une bibliothèque open source (libVA) et une interface de programmation qui visent à permettre le rendu vidéo par le processeur graphique sur les systèmes dérivés d'UNIX (comme Linux ou FreeBSD) utilisant X Window System. Wayland est pris en charge à partir de la version 1.1.0[1].

Conçue initialement par Intel pour ses propres processeurs graphiques de série GMA (puis HD Graphics), elle est librement implémentable par tout fabricant. Cependant, Nvidia et AMD ont chacun leur propre solution, respectivement Video Decode and Presentation API for Unix (VDPAU) et X-Video Bitstream Acceleration (XvBA).

Le décodage est la partie la plus fréquemment prise en charge, mais le codage est aussi possible[2] (par exemple avec les processeurs Intel de la famille Sandy Bridge)[3]. Techniquement le codage serait également possible sur les SoC Atom E6xx[4].

VA-API se veut le successeur de XvMC en gérant notamment, outre la compensation de mouvement (motion compensation) et l'inverse de la transformée en cosinus discrète (inverse discrete cosine transform, ou IDCT), les procédés suivants : Variable Length Decoding (VLD) : CABAC et CAVLC, Inverse Transform (IT) et In-Loop Deblocking (ILDB).

Implémentation

Codecs supportés

Tous les codecs ne sont pas actuellement pris en charge. Citons : MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264 et VC-1/VMW3 (suivant les implémentations).

Logiciels supportés

Liste non exhaustive[5] :

  • Gnash, à partir de la version 0.8.8, à la suite du travail de Gwenolé Beauchesne pour la société Splitted-Desktop Systems[6],[7]
  • VLC media player, à partir de la version 1.1.0[8]
  • MythTV, à partir de la version 0.25[9]
  • Mpv, un fork de MPlayer
  • GStreamer, à partir de la version 1.2 (via la bibliothèque gstreamer-vaapi[10] en version 0.5.7 ou supérieure)[11]
  • La version GNU/Linux de Firefox en environnement Wayland (à partir de la version 75 pour H264 et de la version 76 pour VP9)[12]

Le logiciel MPlayer ne supporte pas VA-API dans sa version officielle, mais une version développée par Gwenolé Beauchesne pour la société Splitted-Desktop Systems existe à cet effet[13].

Processeurs graphiques supportés

Processeurs Intel

Les puces conçues par Intel en interne (nom de code « Gen ») bénéficient de pilotes libres alors que les puces produites sous licence d'Imagination Technologies (PowerVR) n'en bénéficient pas.

Avec des pilotes libres

Sous Linux, les puces Intel G45/GM45 ou supérieures supportent VA-API, soit [14]:

  • pour le décodage MPEG2 et H.264/AVC :
    • Intel GMA X4500HD utilisé dans les chipsets G45,
    • Intel GMA 3150 utilisés avec les processeurs ATOM N450/D410/D450 (plate-forme Pine Trail),
    • Intel HD Graphics présents dans les processeurs Intel Core i7/i5/i3 de première génération (famille Clarkdale).
  • pour le décodage MPEG2 et H.264/AVC, mais aussi VC-1 et l'encodage H.264/AVC :
    • Intel HD Graphics 2000/3000 présents dans les processeurs Intel Core i7/i5/i3 de deuxième génération (famille Sandy Bridge).
  • pour le décodage MPEG2, H.264/AVC, VC-1 et l'encodage H.264/AVC mais aussi MPEG2 :
    • Intel HD Graphics présents dans les processeurs Intel Core i7/i5/i3 de troisième génération (famille Ivy Bridge) et suivants.

À noter que certains processeurs Sandy Bridge, ainsi que les processeurs de générations suivantes, embarquent un circuit dédié à l'encodage/décodage nommé Quick Sync Video. Pour ces processeurs, VA-API sait s'appuyer à la fois sur les unités Quick Sync Video et les shaders[15].

Avec des pilotes non libres

Intel GMA 500 (Poulsbo) supporte VA-API via son pilote non-libre[16]. À noter que le GMA 500 a été le premier processeur graphique à supporter VA-API.

Les SoC Atom E6xx sont également supportés, mais un composant logiciel non-libre Intel, Media Infrastructure Accelerator (MI-X), peut être nécessaire.

Processeurs Nvidia et AMD

Le support n'est pas le même suivant que l'on utilise les pilotes libres ou non-libres.

Avec les pilotes non-libres

libVA a été modifiée pour pouvoir tirer avantage des pilotes compatibles VDPAU[17] ou XvBA[18],[19].

Supportent VDPAU/XvBA (et donc incidemment VA-API) :

  • les cartes Nvidia les plus récentes (à partir de la série GeForce 8) fonctionnant avec les pilotes non-libres qui utilisent à cet effet le circuit PureVideo dédié,
  • les cartes AMD les plus récentes (Radeon HD) fonctionnant avec les pilotes non-libres (Catalyst) qui utilisent à cet effet le circuit Unified Video Decoder (en) (UVD) dédié,
Avec les pilotes libres

Un backend VA-API pour Gallium3D avait été initié mais il a été retiré de Mesa en attendant d'être éventuellement complété[20].

Notes et références

  1. (en) libva 1.1.0 release
  2. (en) Intel Sandy Bridge Video Encode For Linux
  3. (en) Intel Proposes Major Additions To VA-API Acceleration
  4. (en) White Paper: Using Gstreamer for Hardware Accelerated Video Decoding on Intel® Atom™ Processor E6xx Series
  5. (en) vaapi sur le wiki de freedesktop.org
  6. (en) Gnash: décodage fluide de vidéos Flash HD (H.264)
  7. (en) Gnash 0.8.8 Released!
  8. (en) VLC 1.1.0 release notes
  9. (en) Release Notes - 0.25
  10. « gstreamer-vaapi git »
  11. (en) Rapport de bogue sur GNOME Bugzilla
  12. (en) Wayland - Implement vp9 VA-API decode by ffmpeg
  13. (en) Support VA API pour MPlayer
  14. (en) Linux Graphics VAAPI, 01.ORG Open Source Technology Center
  15. (en) Blogue d'Eugeni Dodonov, employé d'Intel
  16. (en) Mplayer, FFmpeg Gain VA-API Support
  17. (en) A NVIDIA VDPAU Back-End For Intel's VA-API
  18. (en) A New Release Of The AMD XvBA Back-End To VA-API
  19. (en) Major Open-Source Code Drop For XvBA, PowerVR Coming
  20. (en) VA-API Support Set To Be Dropped From Mesa

Annexes

Liens internes

Liens externes

  • VA-API sur freedesktop.org
  • Sur le Intel's Open Source Technology Center : Intel Media For Linux et Intel Video and Audio for Linux
  • VA (Video Acceleration) API (présentation par Jonathan Bian en 2009)
  • Page VAAPI sur le wiki du projet Libav
  • icône décorative Portail de l’informatique