![]() | This articlemay be too technical for most readers to understand. Pleasehelp improve it tomake it understandable to non-experts, without removing the technical details.(November 2021) (Learn how and when to remove this message) |
Original author(s) | Intel |
---|---|
Initial release | 2008 |
Stable release | |
Repository | |
Written in | C |
Operating system | Linux,Android,BSD,Windows 10,Windows 11 |
Type | API |
License | MIT License |
Website | www![]() |
Video Acceleration API (VA-API) is anopen sourceapplication programming interface that allows applications such asVLC media player orGStreamer to use hardware video acceleration capabilities, usually provided by thegraphics processing unit (GPU). It is implemented by thefree and open-sourcelibrarylibva, 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 atDirect Rendering Infrastructure (DRI) inX Window System onUnix-likeoperating systems (includingLinux,FreeBSD,Solaris), andAndroid, however it can potentially also be used with directframebuffer and graphics sub-systems for video output. Accelerated processing includes support forvideo decoding,video encoding, subpicture blending, and rendering.[2]
The VA-API specification was originally designed byIntel for itsGMA (Graphics Media Accelerator) series ofGPU hardware with the specific purpose of eventually replacing theXvMC standard as the default Unix multi-platform equivalent ofMicrosoft 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]
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, andVC-1/WMV3). Extending XvMC was considered, but due to its original design for MPEG-2MotionComp only, it made more sense to design an interface from scratch that can fully expose the video decode capabilities in today'sGPUs.[6]
As of 2022, VA-API is natively supported by:[7]
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.
Video decoding and post-processing processes that can be offloaded and accelerated if both the device drivers and GPU hardware supports them:
The current interface is window system independent, so that it can potentially be used with graphics sub-systems other than theDRI (Direct Rendering Infrastructure) inX Window System, such as direct withframebuffer, and it can work with third-partyDRM (Direct Rendering Manager) libraries. In a nutshell, it is a scheme to pass various types of data buffers from the application to theGPU fordecoding or encoding acompressed bit-stream.
{{cite web}}
: CS1 maint: archived copy as title (link)