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.[3] 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.[4]
Overviewedit
The main motivation for VA-API is to enable hardware-accelerated video decode at various entry-points (VLD, IDCT, motion compensation, deblocking[5]) 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.[6]
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
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.[13]