Video Acceleration API

From Wikipedia, the free encyclopedia
  (Redirected from VAAPI)
Jump to navigation Jump to search
libVA
Original author(s)Intel
Initial releaseSeptember 13, 2007; 12 years ago (2007-09-13)
Stable release
2.5.0 / July 5, 2019; 2 months ago (2019-07-05)
Repository Edit this at Wikidata
Written inC
Operating systemLinux, Android, BSD
TypeAPI
LicenseMIT License
Websitefreedesktop.org/wiki/Software/vaapi

Video Acceleration API (VA API) is a royalty-free API as well as its implementation as free and open-source library (libVA) distributed under the MIT License.

The VA API is to be implemented by device drivers to offer end-user software, such as VLC media player or GStreamer, access to available video acceleration hardware, such as PureVideo (through the libva-vdpau driver, which implements VA API in terms of VDPAU) or Unified Video Decoder.

The API enables and provides access to hardware-accelerated video processing, using hardware such as graphics processing units (GPU) to accelerate video encoding and decoding by offloading processing from the central processing unit (CPU).

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[edit]

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[edit]

As of January 17, 2012 VA API is natively supported by:

Supported video codecs[edit]

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) 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[12]
  • VP9 8-bit and 10-bit decode acceleration[12]

Processes that can be accelerated with VA API[edit]

Video decoding and post-processing processes that can be offloaded and accelerated if both the device drivers and GPU hardware supports them:

Software architecture[edit]

Video Acceleration API 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[edit]

See also[edit]

  • Distributed Codec Engine (libdce) — Texas Instruments API for the video codec engine in OMAP based embedded systems
  • OpenMAX — a royalty-free cross-platform media abstraction API from the Khronos Group

References[edit]

  1. ^ a b c "VA-API Video Acceleration On Intel Medfield - Phoronix". Phoronix.com. Retrieved 23 February 2019.
  2. ^ "Video4Linux2: Path to a Standardized Video Codec API" (PDF). Events.linuxfoundation.org. Retrieved 23 February 2019.
  3. ^ Nathan Willis (2009-07-01). "VA API slowly, but surely, making progress". Lwn.net.
  4. ^ "Mplayer, FFmpeg Gain VA-API Support - Phoronix". Phoronix.com. Retrieved 23 February 2019.
  5. ^ "vaapi". Freedesktop.org. Retrieved 23 February 2019.
  6. ^ "Archived copy". Archived from the original on 2012-11-02. Retrieved 2012-11-12.CS1 maint: archived copy as title (link)
  7. ^ "Archived copy". Archived from the original on June 20, 2012. Retrieved November 12, 2012.CS1 maint: archived copy as title (link) Intel hardware-accelerated media decoding and encoding on Linux
  8. ^ "Archived copy". Archived from the original on 2006-08-14. Retrieved 2011-10-03.CS1 maint: archived copy as title (link)
  9. ^ "Intel's Poulsbo Driver A Bloody Mess? - Phoronix". Phoronix.com. Retrieved 23 February 2019.
  10. ^ "S3 Graphics Releases Linux Driver With OpenGL 3.0, VA-API - Phoronix". Phoronix.com. Retrieved 23 February 2019.
  11. ^ Michael Larabel (2009-02-03). "A NVIDIA VDPAU Back-End For Intel's VA-API". Phoronix. Retrieved 2009-03-13.
  12. ^ a b "Archived copy". Archived from the original on 2017-02-01. Retrieved 2017-01-20.CS1 maint: archived copy as title (link)
  13. ^ "Emby Server 3.0.6400 Released". Emby.media. 29 August 2016. Retrieved 23 February 2019.
  14. ^ "Mailing list entry that describes uses of VA-API". Lists.moblin.org. Retrieved 23 February 2019.
  15. ^ "Archived copy". Archived from the original on 2012-03-24. Retrieved 2011-05-12.CS1 maint: archived copy as title (link)
  16. ^ "Archived copy". Archived from the original on 2016-09-16. Retrieved 2016-08-31.CS1 maint: archived copy as title (link)
  17. ^ "Fluendo's New Codecs Support VDPAU, VA-API - Phoronix". Phoronix.com. Retrieved 23 February 2019.
  18. ^ "H.264 VA-API GPU Video Acceleration For Flash - Phoronix". Phoronix.com. Retrieved 23 February 2019.
  19. ^ "Hardware-accelerated video decoding, encoding and processing on Intel graphics through VA-API". Cgit.freedesktop.org. Retrieved 23 February 2019.
  20. ^ a b "XBMC Gets Working Intel VA-API Support - Phoronix". Phoronix.com. Retrieved 23 February 2019.
  21. ^ "Archived copy". Archived from the original on 2013-08-03. Retrieved 2014-02-10.CS1 maint: archived copy as title (link)
  22. ^ "Release Notes - 0.25 - MythTV Official Wiki". Mythtv.org. Retrieved 23 February 2019.
  23. ^ "VLC 1.1.0 release - VideoLAN". Videolan.org. Retrieved 23 February 2019.
  24. ^ "[Client] 2.2.6 Released – Significant CPU usage reductions included". Bluecherrydvr.com. 2 March 2017. Retrieved 23 February 2019.
  25. ^ "the xine project - News Feed". Xine-project.org. Retrieved 23 February 2019.

External links[edit]