Video Acceleration API explained

libva
Author:Intel
Operating System:Linux, Android, BSD, Windows 10, Windows 11
Genre:API

Video Acceleration API (VA-API) is an open source application programming interface that allows applications such as VLC media player or GStreamer to use hardware video acceleration capabilities, usually provided by the graphics processing unit (GPU). It is implemented by the free and open-source library, 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 on Unix-like operating systems (including Linux, FreeBSD, Solaris), and Android, however it can potentially also be used with direct framebuffer and graphics sub-systems for video output. Accelerated processing includes support for video decoding, video encoding, subpicture blending, and rendering.[1]

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.[2] 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.[3]

Overview

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

Supported hardware and drivers

As of 2022, VA-API is natively supported by:[6]

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.

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:

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, such as direct with framebuffer, 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

See also

External links

Notes and References

  1. Web site: VA-API Video Acceleration On Intel Medfield - Phoronix. Phoronix.com. 23 February 2019.
  2. Web site: Video4Linux2: Path to a Standardized Video Codec API. Events.linuxfoundation.org. 23 February 2019.
  3. Web site: VA API slowly, but surely, making progress . Nathan Willis . 2009-07-01 . Lwn.net.
  4. Web site: Mplayer, FFmpeg Gain VA-API Support - Phoronix. Phoronix.com. 23 February 2019.
  5. Web site: vaapi. Freedesktop.org. 23 February 2019.
  6. Web site: Hardware video acceleration . wiki.ArchLinux.org.
  7. Web site: Vilerino . Sil . 2023-02-15 . Video acceleration API (VA-API) now available on Windows! . 2023-03-08 . DirectX Developer Blog . en-US.
  8. Web site: Hardware/vaapi . wiki.libav.org . 2017-01-20 . https://web.archive.org/web/20170201235322/https://wiki.libav.org/Hardware/vaapi . 2017-02-01 . live .
  9. Web site: Emby Server 3.0.6400 Released. 29 August 2016. Emby.media. 23 February 2019.
  10. Web site: Mailing list entry that describes uses of VA-API. Lists.moblin.org. 23 February 2019.
  11. Web site: RealPlayer for MID & Intel/Linux FAQ . HelixCommunity.org . 2011-05-12 . https://web.archive.org/web/20120324001505/https://community.helixcommunity.org/Licenses/realplayer_for_mid_faq.html . 2012-03-24 . dead .
  12. Web site: Archived copy . 2016-08-31 . https://web.archive.org/web/20160916205031/https://raw.githubusercontent.com/FFmpeg/FFmpeg/master/Changelog . 2016-09-16 . dead .
  13. Web site: Fluendo's New Codecs Support VDPAU, VA-API - Phoronix. Phoronix.com. 23 February 2019.
  14. Web site: H.264 VA-API GPU Video Acceleration For Flash - Phoronix. Phoronix.com. 23 February 2019.
  15. Web site: Hardware-accelerated video decoding, encoding and processing on Intel graphics through VA-API. Cgit.freedesktop.org. 23 February 2019.
  16. Web site: XBMC Gets Working Intel VA-API Support - Phoronix. Phoronix.com. 23 February 2019.
  17. Web site: Mplayer in vaapi - Gitorious . 2014-02-10 . https://web.archive.org/web/20130803044531/http://gitorious.org/vaapi/mplayer . 2013-08-03 . dead .
  18. Web site: Release Notes - 0.25 - MythTV Official Wiki. Mythtv.org. 23 February 2019.
  19. Web site: VLC 1.1.0 release - VideoLAN. Videolan.org. 23 February 2019.
  20. Web site: [Client] 2.2.6 Released – Significant CPU usage reductions included]. 2 March 2017. Bluecherrydvr.com. 23 February 2019.
  21. Web site: the xine project - News Feed. Xine-project.org. 23 February 2019.
  22. Web site: OBS Studio Now Supports VA-API For Video Encoding - Phoronix. 2020-08-06. www.phoronix.com.
  23. Web site: Firefox on Fedora finally gets VA-API on Wayland. 2020-08-19. mastransky.wordpress.com. 3 June 2020 .
  24. Web site: Firefox 80 Available With VA-API On X11, WebGL Parallel Shader Compile Support. 2020-08-25. www.phoronix.com.