HOME

TheInfoList



OR:

Video Acceleration API (VA-API) is an
open source Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use the source code, design documents, or content of the product. The open-source model is a decentralized sof ...
application programming interface that allows applications such as
VLC media player VLC media player (previously the VideoLAN Client and commonly known as simply VLC) is a free and open-source, portable, cross-platform media player software and streaming media server developed by the VideoLAN project. VLC is available for d ...
or
GStreamer GStreamer is a pipeline-based multimedia framework that links together a wide variety of media processing systems to complete complex workflows. For instance, GStreamer can be used to build a system that reads files in one format, processes the ...
to use hardware video acceleration capabilities, usually provided by the
graphics processing unit A graphics processing unit (GPU) is a specialized electronic circuit designed to manipulate and alter memory to accelerate the creation of images in a frame buffer intended for output to a display device. GPUs are used in embedded systems, mo ...
(GPU). It is implemented by the
free and open-source Free and open-source software (FOSS) is a term used to refer to groups of software consisting of both free software and open-source software where anyone is freely licensed to use, copy, study, and change the software in any way, and the source ...
library A library is a collection of materials, books or media that are accessible for use and not just for display purposes. A library provides physical (hard copies) or digital access (soft copies) materials, and may be a physical location or a vi ...
, 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 (DRI) in
X Window System The X Window System (X11, or simply X) is a windowing system for bitmap displays, common on Unix-like operating systems. X provides the basic framework for a GUI environment: drawing and moving windows on the display device and interacting ...
on
Unix Unix (; trademarked as UNIX) is a family of multitasking, multiuser computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, a ...
-like
operating system An operating system (OS) is system software that manages computer hardware, software resources, and provides common daemon (computing), services for computer programs. Time-sharing operating systems scheduler (computing), schedule tasks for ef ...
s (including
Linux Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, which i ...
,
FreeBSD FreeBSD is a free and open-source Unix-like operating system descended from the Berkeley Software Distribution (BSD), which was based on Research Unix. The first version of FreeBSD was released in 1993. In 2005, FreeBSD was the most popular ...
, Solaris), and
Android Android may refer to: Science and technology * Android (robot), a humanoid robot or synthetic organism designed to imitate a human * Android (operating system), Google's mobile operating system ** Bugdroid, a Google mascot sometimes referred to ...
, however it can potentially also be used with direct
framebuffer A framebuffer (frame buffer, or sometimes framestore) is a portion of random-access memory (RAM) containing a bitmap that drives a video display. It is a memory buffer containing data representing all the pixels in a complete video frame. Moder ...
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 Intel Corporation is an American multinational corporation and technology company headquartered in Santa Clara, California, Santa Clara, California. It is the world's largest semiconductor chip manufacturer by revenue, and is one of the devel ...
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. 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 ( VLD, IDCT,
motion compensation Motion compensation in computing, is an algorithmic technique used to predict a frame in a video, given the previous and/or future frames by accounting for motion of the camera and/or objects in the video. It is employed in the encoding of video d ...
, deblocking) for the prevailing coding standards today (
MPEG-2 MPEG-2 (a.k.a. H.222/H.262 as was defined by the ITU) is a standard for "the generic coding of moving pictures and associated audio information". It describes a combination of lossy video compression and lossy audio data compression methods, w ...
,
MPEG-4 ASP MPEG-4 Part 2, MPEG-4 Visual (formally ISO/ IEC 14496-2) is a video compression format developed by the Moving Picture Experts Group (MPEG). It belongs to the MPEG-4 ISO/IEC standards. It uses block-wise motion compensation and a discrete cosine ...
/
H.263 H.263 is a video compression standard originally designed as a low-bit-rate compressed format for videotelephony. It was standardized by the ITU-T Video Coding Experts Group (VCEG) in a project ending in 1995/1996. It is a member of the H.26x fam ...
, 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.


Supported hardware and drivers

As of 2019, VA-API is natively supported by: * Intel Quick Sync open-source drivers for Linux *
Mesa A mesa is an isolated, flat-topped elevation, ridge or hill, which is bounded from all sides by steep escarpments and stands distinctly above a surrounding plain. Mesas characteristically consist of flat-lying soft sedimentary rocks capped by a ...
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


Supported video codecs

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 Xvid (formerly "XviD") is a video codec library following the MPEG-4 video coding standard, specifically MPEG-4 Part 2 Advanced Simple Profile (ASP). It uses ASP features such as b-frames, global and quarter pixel motion compensation, lumi ma ...
) decode acceleration * H.264 AVC encode acceleration Main Profile * H.264 AVC decode acceleration High Profile ** H.264 / AVC Hardware Variable Length Decoding (VLD) - CABAC ** H.264 / AVC Hardware Variable Length Decoding (VLD) - CAVLC ** H.264 / AVC Hardware Inverse Transform (IT) ** H.264 / AVC Hardware Motion Compensation (HWMC) ** H.264 / AVC Hardware In-Loop Deblocking (ILDB) * 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 decode acceleration


Processes that can be accelerated with VA-API

Video decoding and post-processing processes that can be offloaded and accelerated if both the device drivers and GPU hardware supports them: *
Motion compensation Motion compensation in computing, is an algorithmic technique used to predict a frame in a video, given the previous and/or future frames by accounting for motion of the camera and/or objects in the video. It is employed in the encoding of video d ...
* Inverse discrete cosine transform * In-loop deblocking filter * Intra-frame prediction * variable-length decoding, more commonly known as slice-level acceleration * Bitstream processing ( Context-adaptive variable-length coding/ Context-adaptive binary arithmetic coding)


Software architecture

The current interface is window system independent, so that it can potentially be used with graphics sub-systems other than the DRI (Direct Rendering Infrastructure) in
X Window System The X Window System (X11, or simply X) is a windowing system for bitmap displays, common on Unix-like operating systems. X provides the basic framework for a GUI environment: drawing and moving windows on the display device and interacting ...
, such as direct with
framebuffer A framebuffer (frame buffer, or sometimes framestore) is a portion of random-access memory (RAM) containing a bitmap that drives a video display. It is a memory buffer containing data representing all the pixels in a complete video frame. Moder ...
, and it can work with third-party DRM (Direct Rendering Manager) libraries. In a nutshell, it is a scheme to pass various types of data buffers from the application to the GPU for decoding or encoding a compressed bit-stream.


Software supporting VA-API

*
Clutter Clutter and its derivations may refer to any of the following: Excessive physical disorder * Clutter, a confusing, or disorderly, state or collection, and possible symptom of compulsive hoarding * Clutter (marketing), numerous advertisements, ...
toolkit * Jellyfin media server
datarhei Restreamer
real-time live video streaming *
Emby Emby (formerly Media Browser) is a media server designed to organize, play, and stream audio and video to a variety of devices. Emby's source code was mostly open with some closed-source components as of August 2017, releases of the software p ...
media server (starting from release 3.0.6400) * Helix media player (
Linux Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, which i ...
) * ''ffmpeg'', a command line tool from the
FFmpeg FFmpeg is a free and open-source software project consisting of a suite of libraries and programs for handling video, audio, and other multimedia files and streams. At its core is the command-line ffmpeg tool itself, designed for processing of ...
project, supports VA-API encoding through CLI with version starting from 3.1 and also
libavcodec libavcodec is a free and open-source library of codecs for encoding and decoding video and audio data. libavcodec is an integral part of many open-source multimedia applications and frameworks. The popular MPV, xine and VLC media players u ...
(also part of the FFmpeg project) does contain code that other applications use to support hardware accelerated decoding, including VA-API.
Fluendo
* Gnash Flash /
SWF SWF ( ) is an Adobe Flash file format used for multimedia, vector graphics and ActionScript.Open Screen Pr ...
player *
GStreamer GStreamer is a pipeline-based multimedia framework that links together a wide variety of media processing systems to complete complex workflows. For instance, GStreamer can be used to build a system that reads files in one format, processes the ...
through *
Kodi KODI (1400 AM) is a radio station broadcasting a news/talk format. Licensed to Cody, Wyoming, United States, the station is currently owned by the Big Horn Radio Network, a division of Legend Communications of Wyoming, LLC, and features prog ...
(formerly XBMC Media Center) (
Linux Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, which i ...
) * Kodibuntu (formerly XBMC Live) (Linux Live CD/USB operating-system) *
MPlayer MPlayer is a free and open-source media player software application. It is available for Linux, OS X and Microsoft Windows. Versions for OS/2, Syllable, AmigaOS, MorphOS and AROS Research Operating System are also available. A port for ...
(v1 with patches) and its fork mpv (native) * MythTV (starting from release 0.25)
OpenShot
*
VLC media player VLC media player (previously the VideoLAN Client and commonly known as simply VLC) is a free and open-source, portable, cross-platform media player software and streaming media server developed by the VideoLAN project. VLC is available for d ...
(starting from release 1.1.0) * Bluecherry DVR client (starting from release 2.2.6) * Xine (via "''xine-lib-vaapi''" library) since Version 1.2.3 * OBS Studio *
Firefox Mozilla Firefox, or simply Firefox, is a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation. It uses the Gecko rendering engine to display web pages, which implements current and ...
(On Wayland since release 78 and on X11 since release 80)


See also

*
Distributed Codec Engine Distributed Codec Engine (DCE) is an API and its implementation as software library ("''libdce''") by Texas Instruments. The library was released under the Revised BSD License and some additional terms. It enables and provides remote access to h ...
(libdce) — Texas Instruments API for the video codec engine in OMAP based embedded systems *
OpenMAX OpenMAX (Open Media Acceleration), often shortened as "OMX", is a non-proprietary and royalty-free cross-platform set of C-language programming interfaces. It provides abstractions for routines that are especially useful for processing of audio, ...
— a royalty-free cross-platform media abstraction API from the Khronos Group


References


External links

*
Intel Media and Audio for Linux

mobile-hw-decode

"VA API slowly -- but surely -- making progress"
– an overview from 2009
"MPlayer, FFmpeg Gain VA-API Support"
– from 2008 {{freedesktop.org Application layer protocols Application programming interfaces Freedesktop.org Video acceleration Video acceleration APIs available on Linux X Window extensions