Jump to content

Video Acceleration API

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by 164.4.17.32 (talk) at 15:08, 12 November 2012. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

libVA
Stable release
1.0.16 / August 2, 2012 (2012-08-02)
Repository
Written inC
Operating systemUnix-like
TypeLibrary
Websitewww.freedesktop.org/wiki/Software/vaapi

Video Acceleration API (VA API) is an open source software library ("libVA") and API specification. The cross-platform API enables and provides access to hardware accelerated video processing, using hardware like for example Graphics Processing Units (GPU) to accelerate video processing in order to offload the CPU (Central Processing Unit) to decode and encode compressed digital video. VA API is primarily targeted at DRI (Direct Rendering Infrastructure) in X Window System on Unix-based operating systems (including Linux, FreeBSD, Solaris), and Android, but can also be used with direct framebuffer for video output. Accelerated processing includes support for video decoding, video encoding, subpicture blending, and rendering.[1]

VA API was designed with the purpose of some day fully replacing XvMC standard as the default Unix equivalent of Microsoft Windows DirectX Video Acceleration (DxVA) API. The VA API specification was originally designed by Intel for its GMA (Graphics Media Accelerator) series of GPU hardware, but the API is limited to only GPUs or Intel specific hardware. Other hardware and manufacturers can also freely use this API for hardware accelerated video processing.[2]

Overview

The main motivation for VA API is to enable hardware accelerated video decode at various entry-points (VLD, IDCT, Motion Compensation, deblocking[3]) for the prevailing coding standards today (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, 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.[4]

Supported hardware and drivers

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

Support video codecs

VA API currently supports these video codecs in the official mainline version, but note exactly which video codecs are supported depends on the hardware and the drivers capability.

  • Support MPEG-2 decode acceleration Main Profile @ HL up to 80 Mbps
  • Support VC-1 / WMV3 decode acceleration Advanced Profile @ Level 3 up to 40 Mbps
  • Support H.264/AVC encode acceleration Main Profile @ L4.1 up to 40 Mbps
  • Support H.264/AVC decode acceleration High Profile @ L4.1 up to 40 Mbps, with:
    • 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)

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:

Architecture

The current interface is focused on video decode only and 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 (Digital Rights Management) libraries. In a nutshell, it is a scheme to pass various types of data buffers from the application to the GPU for video decoding a compressed bit-stream.

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 led 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 MPEG-2." http://www.mythtv.org/wiki/XvMC

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

Software supporting VA API

Some software may gain VA API support in the future : Lightspark (Flash / SWF player),[20] GStreamer (via "gstreamer-vaapi" VA-API plugins for GStreamer)[21] and Xine (via "xine-lib-vaapi" library).[22]

See also

References

  1. ^ http://www.phoronix.com/scan.php?page=news_item&px=MTA0NDI VA-API Video Acceleration On Intel Medfield
  2. ^ Nathan Willis (2009-07-01). "VA API slowly, but surely, making progress". lwn.net.
  3. ^ MPlayer, FFmpeg Gain VA-API Support
  4. ^ freedesktop.org - Software/vaapi, About
  5. ^ http://gitorious.org/crystalhd-video CrystalHD backend for VA-API (libva)
  6. ^ http://intellinuxgraphics.org/h264.html Intel hardware-accelerated media decoding and encoding on Linux
  7. ^ http://intellinuxgraphics.org/documentation.html
  8. ^ Intel's Poulsbo Driver A Bloody Mess?
  9. ^ a b http://www.phoronix.com/scan.php?page=news_item&px=MTA0NDI VA-API Video Acceleration On Intel Medfield
  10. ^ S3 Graphics Releases Linux Driver With OpenGL 3.0, VA API
  11. ^ Michael Larabel (2009-02-03). "A NVIDIA VDPAU Back-End For Intel's VA-API". Phoronix. Retrieved 2009-03-13.
  12. ^ Mailing list entry that describes uses of VA-API
  13. ^ https://community.helixcommunity.org/Licenses/realplayer_for_mid_faq.html RealPlayer for MID & Intel/Linux FAQ
  14. ^ .264 VA-API GPU Video Acceleration For Flash
  15. ^ Gnash uses libavcodec's VA-API code for hardware accelerated video decoding
  16. ^ Fluendo's New Codecs Support VDPAU, VA-API
  17. ^ a b XBMC Gets Working Intel VA-API Support
  18. ^ VLC 1.1.0 release notes
  19. ^ MythTV 0.25 release notes
  20. ^ Transclusion error: {{En}} is only for use in File namespace. Use {{lang-en}} or {{in lang|en}} instead. Bug report on Launchpad
  21. ^ http://www.splitted-desktop.com/~gbeauchesne/gstreamer-vaapi/ gstreamer-vaapi - VA-API plugins for GStreamer
  22. ^ Transclusion error: {{En}} is only for use in File namespace. Use {{lang-en}} or {{in lang|en}} instead. VAAPI support for Xine on xine-devel mailing list
  23. ^ http://www.tuaw.com/2011/01/20/xbmc-for-ios-and-atv2-now-available/ XBMC for iOS and Apple TV now available
  24. ^ http://developer.amd.com/gpu/AMDAPPSDK/assets/OpenVideo_Decode_API.PDF OpenVideo Decode (OVD) API