Video Acceleration API
Video Acceleration API (VA API) is a software API specification which provides access to GPU video-hardware acceleration for video processing. Accelerated processing includes video decoding, subpicture blending and rendering.
VA API is meant to some day replace XvMC, XvMC which is the UNIX equivalent of the Microsoft Windows DirectX Video Acceleration (DxVA) API. The main motivation for VA API is to enable hardware accelerated video decode at various entry-points (iDCT, Motion Compensation, VLD, 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.
Processes that could be accelerated
- Motion compensation (mocomp)
- Inverse discrete cosine transform (iDCT)
- Inverse telecine 3:2 and 2:2 pull-down correction
- Inverse modified discrete cosine transform (iMDCT)
- In-loop deblocking filter
- Intra-frame prediction
- Inverse quantization (IQ)
- Variable-Length Decoding (VLD), more commonly known as slice-level acceleration
- Spatial-temporal deinterlacing and automatic interlace/progressive source detection
- Bitstream processing (CAVLC/CABAC)
Architecture
The current interface is focused on video decode only and is window system independent, so that potentially it can be used with graphics sub-systems other than the X Window System. In a nutshell it is basically a scheme to pass various types of data buffers from the application to the GPU for decoding a compressed bit-stream. Feedback on this API is greatly welcomed, as this is intended to be a community collaborative effort.
Sources
"This API is intended to provide an interface between a video decode application (client) and a hardware decode accelerator (server), to off-load video decode operations from the host to the hardware accelerator at various entry-points." http://www.freedesktop.org/wiki/Software/vaapi
"A new video acceleration API is being developed, in an effort lead by Intel. This new API supports more complete offload (VLD) as well as iDCT+MC, and can support acceleration of MPEG4, H.264, VC-1, as well as MPEG2." http://www.mythtv.org/wiki/index.php/XvMC
"Extending XvMC was considered, but due to its original design for MPEG-2 MoComp only, it made more sense to design an interface from scratch that can fully expose the video decode capabilities in today's GPUs." http://www.xboxmediacenter.com/wiki/index.php?title=Hardware_Accelerated_Video_Decoding
The "VA API" and "libVA" can also be read about here: "The end user impact is improved performance of H.264, VC-1, MPEG-2 and MPEG-4 video playback with media players that use the new API compared to playback using a pure software implementation." https://wiki.ubuntu.com/mobile-hw-decode
See also
- X-Video Motion Compensation (XvMC)
- DirectX Video Acceleration (DxVA) API - Microsoft Windows equivalent to VA API and XvMC