Video Acceleration API
Video Acceleration 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. It is implemented by the free and open-source library, 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 in X Window System on Unix-like operating systems, 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.
The VA-API specification was originally designed by Intel for its GMA 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 API, but today the API is no longer limited to Intel-specific hardware or GPUs. 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.
Overview
The main motivation for VA-API is to enable hardware-accelerated video decode at various entry-points for the prevailing coding standards today. 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.Supported hardware and drivers
As of 2022, VA-API is natively supported by:- 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
Supported video codecs
- MPEG-2 decode acceleration Main Profile
- VC-1 / WMV3 decode acceleration Advanced Profile
- MPEG-4 Part 2 decode acceleration
- H.264 AVC encode acceleration Main Profile
- H.264 AVC decode acceleration High Profile
- * H.264 / AVC Hardware Variable Length Decoding - CABAC
- * H.264 / AVC Hardware Variable Length Decoding - CAVLC
- * H.264 / AVC Hardware Inverse Transform
- * H.264 / AVC Hardware Motion Compensation
- * H.264 / AVC Hardware In-Loop Deblocking
- H.265/HEVC encode acceleration
- H.265/HEVC decode acceleration
- VP9 8-bit encode acceleration
- VP9 8-bit and 10-bit decode acceleration
- AV1 8-bit and 10-bit encode acceleration
- AV1 8-bit and 10-bit decode acceleration
Processes that can be accelerated with VA-API
- Motion compensation
- Inverse discrete cosine transform
- In-loop deblocking filter
- Intra-frame prediction
- variable-length decoding, more commonly known as slice-level acceleration
- Bitstream processing
Software architecture
Software supporting VA-API
- Chromium
- Bluecherry DVR client
- datarhei Restreamer real-time live video streaming
- Emby media server
- ffmpeg, a command line tool from the FFmpeg project
- Firefox
- Fluendo
- Frigate NVR
- Gnash Flash / SWF player
- GStreamer through
- Helix media player
- Jellyfin media server
- Kodi
- Kodibuntu
- libavcodec
- MPlayer with custom patches and its fork mpv
- MythTV
- OBS Studio
- OpenShot
- VLC media player
- Xine since Version 1.2.3