The main motivation for VA-API (Video Acceleration API) is to enable hardware accelerated video decode/encode at various entry-points (VLD, IDCT, Motion Compensation etc.) for the prevailing coding standards today (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3). 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.

The current video decode/encode interface is window system independent, so that potentially it can be used with graphics sub-systems other than X. In a nutshell it is basically a scheme to pass various types of data buffers from the application to the GPU for decoding or encoding. Feedback on the API is greatly welcomed, as this is intended to be a community collaborative effort.


The latest releases of libva software can be found at:


libva an implementation of VA-API for Linux, is now available via git from the following location (

git clone git://

The gstreamer-vaapi elements are available at:

git clone git://


Latest VA-API decode/encode specification can be found at,

Post-processing interface can be found at

Drivers (back-ends) that implement VA-API

Decoding Hardware with no backend available


Software using VA-API

libVA sample code


VA-API Architecture


Jonathan Bian (; Austin Yuan (