This article may be too technical for most readers to understand. Please help improve it to make it understandable to non-experts, without removing the technical details. (November 2021) (Learn how and when to remove this template message)
Short description: Open source API for video acceleration
libva
Original author(s)
Intel
Operating system
Linux, Android, BSD, Windows 10, Windows 11
Type
API
Video Acceleration API (VA-API) is an open source application programming interface that allows applications such as VLC media player or GStreamer to use hardware video acceleration capabilities, usually provided by the graphics processing unit (GPU). It is implemented by the free and open-source library libva, combined with a hardware-specific driver, usually provided together with the GPU driver.
VA-API video decode/encode interface is platform and window system independent but is primarily targeted at Direct Rendering Infrastructure (DRI) in X Window System on Unix-like operating systems (including Linux, FreeBSD, Solaris), and Android, however it can potentially also be used with direct framebuffer and graphics sub-systems for video output. Accelerated processing includes support for video decoding, video encoding, subpicture blending, and rendering.[1]
The VA-API specification was originally designed by Intel for its GMA (Graphics Media Accelerator) series of GPU hardware with the specific purpose of eventually replacing the XvMC standard as the default Unix multi-platform equivalent of Microsoft Windows DirectX Video Acceleration (DxVA) API, but today the API is no longer limited to Intel-specific hardware or GPUs.[2] Other hardware and manufacturers can freely use this open standard API for hardware accelerated video processing with their own hardware without paying a royalty fee.[3]
Contents
1Overview
1.1Supported hardware and drivers
1.2Supported video codecs
2Processes that can be accelerated with VA-API
3Software architecture
4Software supporting VA-API
5See also
6References
7External links
Overview
An example of vainfo output, showing supported video codecs for VA-API acceleration
The main motivation for VA-API is to enable hardware-accelerated video decode at various entry-points (VLD, IDCT, motion compensation, deblocking[4]) for the prevailing coding standards today (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, H.265/HEVC, and VC-1/WMV3). Extending XvMC was considered, but due to its original design for MPEG-2 MotionComp only, it made more sense to design an interface from scratch that can fully expose the video decode capabilities in today's GPUs.[5]
Supported hardware and drivers
As of 2022, VA-API is natively supported by:[6]
Intel Quick Sync open-source drivers for Linux
Mesa open-source drivers for AMD and Nvidia graphics cards
AMDGPU-PRO drivers for AMD graphics cards on Linux
libva-vdpau-driver for cards supported by VDPAU
Direct3D 12 implementations with the VAOn12 driver[7]
Supported video codecs
VA-API currently supports these video codecs in the official mainline version, but note that exactly which video codecs are supported depends on the hardware and the driver's capabilities.
MPEG-2 decode acceleration Main Profile
VC-1 / WMV3 decode acceleration Advanced Profile
MPEG-4 Part 2 (H.263) (a.k.a. MPEG-4 SP / MPEG-4 ASP, more commonly known as Xvid) decode acceleration
The current interface is window system independent, so that it can potentially be used with graphics sub-systems other than the DRI (Direct Rendering Infrastructure) in X Window System, such as direct with framebuffer, and it can work with third-party DRM (Direct Rendering Manager) libraries. In a nutshell, it is a scheme to pass various types of data buffers from the application to the GPU for decoding or encoding a compressed bit-stream.
Software supporting VA-API
A log of Firefox showing VA-API being used for video decoding acceleration
Clutter toolkit
Jellyfin media server
datarhei Restreamer real-time live video streaming
Emby media server (starting from release 3.0.6400)[9]
Helix media player (Linux)[10][11]
ffmpeg, a command line tool from the FFmpeg project, supports VA-API encoding through CLI with version starting from 3.1 and also libavcodec (also part of the FFmpeg project) does contain code that other applications use to support hardware accelerated decoding, including VA-API.[12]
Fluendo[13]
Gnash Flash / SWF player[14]
GStreamer through gstreamer-vaapi[15]
Kodi (formerly XBMC Media Center) (Linux)[16]
Kodibuntu (formerly XBMC Live) (Linux Live CD/USB operating-system)[16]
MPlayer (v1 with patches)[17] and its fork mpv (native)
MythTV (starting from release 0.25)[18]
OpenShot
VLC media player (starting from release 1.1.0)[19]
Bluecherry DVR client (starting from release 2.2.6)[20]
Xine (via "xine-lib-vaapi" library) since Version 1.2.3[21]
OBS Studio[22]
Firefox (On Wayland since release 78 and on X11 since release 80)[23][24]
See also
Distributed Codec Engine (libdce) — Texas Instruments API for the video codec engine in OMAP based embedded systems
OpenMAX — a royalty-free cross-platform media abstraction API from the Khronos Group
References
↑"VA-API Video Acceleration On Intel Medfield - Phoronix". https://www.phoronix.com/scan.php?page=news_item&px=MTA0NDI.
↑"Video4Linux2: Path to a Standardized Video Codec API". https://events.linuxfoundation.org/images/stories/pdf/lceu2012_debski.pdf.
↑Nathan Willis (2009-07-01). "VA API slowly, but surely, making progress". https://lwn.net/Articles/339349/.
↑"Mplayer, FFmpeg Gain VA-API Support - Phoronix". https://www.phoronix.com/scan.php?page=article&item=xorg_vaapi_mplayer&num=1.
↑ 6.06.1"Hardware video acceleration". wiki.ArchLinux.org. https://wiki.archlinux.org/index.php/Hardware_video_acceleration.
↑Vilerino, Sil (2023-02-15). "Video acceleration API (VA-API) now available on Windows!" (in en-US). https://devblogs.microsoft.com/directx/video-acceleration-api-va-api-now-available-on-windows/.
↑"Fluendo's New Codecs Support VDPAU, VA-API - Phoronix". https://www.phoronix.com/scan.php?page=news_item&px=ODEwMw.
↑"H.264 VA-API GPU Video Acceleration For Flash - Phoronix". https://www.phoronix.com/scan.php?page=news_item&px=NzU1MA.
↑"Hardware-accelerated video decoding, encoding and processing on Intel graphics through VA-API". https://cgit.freedesktop.org/gstreamer/gstreamer-vaapi.
↑ 16.016.1"XBMC Gets Working Intel VA-API Support - Phoronix". https://www.phoronix.com/scan.php?page=news_item&px=ODEyNw.
↑"Mplayer in vaapi - Gitorious". https://gitorious.org/vaapi/mplayer.
↑"Release Notes - 0.25 - MythTV Official Wiki". https://www.mythtv.org/wiki/Release_Notes_-_0.25.
↑"[Client 2.2.6 Released – Significant CPU usage reductions included"]. 2 March 2017. http://www.bluecherrydvr.com/client-2-2-6-released-significant-cpu-usage-reductions-included/.
↑"OBS Studio Now Supports VA-API For Video Encoding - Phoronix". https://www.phoronix.com/scan.php?page=news_item&px=OBS-Studio-VA-API-H264.
↑"Firefox on Fedora finally gets VA-API on Wayland". 3 June 2020. https://mastransky.wordpress.com/2020/06/03/firefox-on-fedora-finally-gets-va-api-on-wayland/.
↑"Firefox 80 Available With VA-API On X11, WebGL Parallel Shader Compile Support". https://www.phoronix.com/scan.php?page=news_item&px=Firefox-80-Released.
External links
Intel Media and Audio for Linux
mobile-hw-decode
"VA API slowly -- but surely -- making progress" – an overview from 2009
"MPlayer, FFmpeg Gain VA-API Support" – from 2008
v
t
e
X Window System
Architecture
Core protocol
X Window selection
X Window authorization
X11 color names
X Input Method
Wayland
Extensions
X Image Extension
X keyboard extension
RandR
X Rendering Extension
Shape extension
Shared memory extension
X Display Manager Control Protocol
X video extension
X-Video Motion Compensation
AIGLX
GLX
Multi-Pointer X
Display PostScript
Composite
Xinerama
Components and notable implementations
display servers
X.Org Server
Cygwin/X
X-Win32
X386
XFree86
XDarwin
Xming
Xsgi
Xsun
Xgl
Xephyr
XQuartz
XWayland
client libraries
Xlib
XCB
X Toolkit Intrinsics
display managers session managers
GDM
KDM
SDDM
XDM
LightDM
LXDM
SLiM
Entrance
WDM
window managers (comparison)
Compositing
Compiz
KWin
Metacity
Mutter
Xfwm
Enlightenment
Stacking
AfterStep
amiwm
Blackbox
cwm
Fluxbox
FVWM
IceWM
JWM
Matchbox
mwm
Openbox
Sawfish
twm
Window Maker
Tiling
awesome
dwm
i3
Ion
ratpoison
wmii
xmonad
StumpWM
larswm
Standards
ICCCM
EWMH
XDS
freedesktop.org
Applications
xcalc
xclock
xedit
xload
xterm
xeyes
desktop environments
v
t
e
Free and open-source software projects hosted by freedesktop.org