Video Acceleration API
|
|
This article may require cleanup to meet Wikipedia's quality standards. (Consider using more specific cleanup instructions.) Please help improve this article if you can. The talk page may contain suggestions. (September 2009) |
| Stable release | 1.0.15 |
|---|---|
| Written in | C |
| Operating system | Unix-like |
| Type | Library |
| Website | www.freedesktop.org/wiki/Software/vaapi |
Video Acceleration API (VA API) is an open source software library ("libVA") and API specification. It enables and provides access to graphics hardware (GPU) acceleration for video processing. VA API is targeted at the X Window System on Unix-based operating systems (including Linux, FreeBSD, and Solaris). Accelerated processing includes video decoding, video encoding, subpicture blending and rendering. The specification was originally designed by Intel for its GMA (Graphics Media Accelerator) series of GPU hardware. However, the API is not limited to GPUs or Intel specific hardware, as other hardware and manufacturers can also freely use this API for hardware accelerated video decoding.[1]
VA API was designed with the purpose of some day fully replacing XvMC, which used to be the Unix equivalent of the Microsoft Windows DirectX Video Acceleration (DxVA) API, and more.
Contents |
[edit] Overview
The main motivation for VA API is to enable hardware accelerated video decode at various entry-points (VLD, IDCT, Motion Compensation, deblocking[2]) 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.[3]
[edit] Supported Hardware and Drivers
As of January 17, 2012 VA API is natively supported by :
- The free drivers of the Intel G45 chipset (with Intel GMA X4500HD integrated graphics) and later[4]
- The non-free drivers for Intel's Poulsbo Chipset with Imagination Technologies's PowerVR-based GMA 500 integrated graphics[5]
- The non-free drivers for Atom E6xx and Penwell based SoCs are also supported via its Media Infrastructure Accelerator (MI-X).[6]
- The non-free drivers Intel Medfield SoCs with Imagination Technologies's PowerVR-based integrated graphics.[7]
- The free drivers of S3 Graphics's Chrome 400 and later series are also supported.[8]
- In November 2009, VA-API also gained a new proprietary backend named "xvba-video" which allows VA-API powered applications to take advantage of AMD Radeon's free drivers for its chipsets with UVD2 support via the XvBA library (X-Video Bitstream Acceleration API designed by AMD).
- Additionally, VDPAU (Video Decode and Presentation API for Unix), a competing API designed by NVIDIA, can potentially also used as a backend for the VA API. If this is supported, any software that supports VA API then also indirectly supports a subset of VDPAU.[9]
[edit] Processes that can be accelerated with VA API
Video decoding and post-processing processes that can be accelerated if both the device drivers and GPU hardware supports them:
- Motion compensation (mocomp)
- Inverse discrete cosine transform (iDCT)
- In-loop deblocking filter
- Intra-frame prediction
- Variable-Length Decoding (VLD), more commonly known as slice-level acceleration
- Bitstream processing (CAVLC/CABAC)
[edit] 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.
[edit] 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
[edit] Software supporting VA API
- Helix media player (Linux)[10][11]
- Clutter (toolkit)
- Gnash Flash / SWF player[12]
- ffmpeg, a command line tool from the FFmpeg project, does not support VA-API, but libavcodec (also part of the FFmpeg project) does contain code that other applications use to support hardware accelerated decoding, including VA API.[13]
- Fluendo[14]
- XBMC Media Center (Linux)[15]
- XBMC Live (Linux Live CD/USB operating-system)[15]
- VLC media player (starting from release 1.1.0)[16]
Some software may gain VA API support in the future : Lightspark (Flash / SWF player),[17] GStreamer (via "gstreamer-vaapi" VA-API plugins for GStreamer)[18], MythTV[19] and Xine (via "xine-lib-vaapi" library).[20]
[edit] See also
- VDPAU (Video Decode and Presentation API for Unix)
- X-Video Bitstream Acceleration (XvBA)
- X-Video Motion Compensation (XvMC)
- DirectX Video Acceleration (DxVA) API - Microsoft Windows analogue
- Distributed Codec Engine (libcde) is a Texas Instruments API for the video codec engine in OMAP based embedded systems
- Video Decode Acceleration Framework is Apple Inc.s API for hardware-accelerated decoding of H.264 on Mac OS X
- VideoToolBox is an undocumented API from Apple Inc. for hardware-accelerated decoding on Apple TV and Mac OS X 10.5 or later.[21]
- OpenVideo Decode (OVD) – an new open cross-platform video acceleration API from AMD.[22]
- OpenMAX IL (Open Media Acceleration Integration Layer) - a royalty-free cross-platform media abstraction API from the Khronos Group
- Nvidia PureVideo - the bit-stream technology from NVIDIA used in their graphics chips to accelerate video decoding on hardware GPU.
- UVD (Unified Video Decoder) - the bit-stream technology from ATI Technologies used in their graphics chips to accelerate video decoding on hardware GPU.
[edit] References
- ^ Nathan Willis (2009-07-01). "VA API slowly, but surely, making progress". lwn.net. http://lwn.net/Articles/339349/.
- ^ MPlayer, FFmpeg Gain VA-API Support
- ^ freedesktop.org - Software/vaapi, About
- ^ http://intellinuxgraphics.org/documentation.html
- ^ Intel's Poulsbo Driver A Bloody Mess?
- ^ http://www.phoronix.com/scan.php?page=news_item&px=MTA0NDI VA-API Video Acceleration On Intel Medfield
- ^ http://www.phoronix.com/scan.php?page=news_item&px=MTA0NDI VA-API Video Acceleration On Intel Medfield
- ^ S3 Graphics Releases Linux Driver With OpenGL 3.0, VA API
- ^ Michael Larabel (2009-02-03). "A NVIDIA VDPAU Back-End For Intel's VA-API". Phoronix. http://www.phoronix.com/scan.php?page=article&item=xorg_vdpau_vaapi. Retrieved 2009-03-13.
- ^ Mailing list entry that describes uses of VA-API
- ^ https://community.helixcommunity.org/Licenses/realplayer_for_mid_faq.html RealPlayer for MID & Intel/Linux FAQ
- ^ .264 VA-API GPU Video Acceleration For Flash
- ^ Gnash uses libavcodec's VA-API code for hardware accelerated video decoding
- ^ Fluendo's New Codecs Support VDPAU, VA-API
- ^ a b XBMC Gets Working Intel VA-API Support
- ^ VLC 1.1.0 release notes
- ^ (English) Bug report on Launchpad
- ^ http://www.splitted-desktop.com/~gbeauchesne/gstreamer-vaapi/ gstreamer-vaapi - VA-API plugins for GStreamer
- ^ http://www.mythtv.org/wiki/VAAPI MythTV VAAPI
- ^ (English) VAAPI support for Xine on xine-devel mailing list
- ^ http://www.tuaw.com/2011/01/20/xbmc-for-ios-and-atv2-now-available/ XBMC for iOS and Apple TV now available
- ^ http://developer.amd.com/gpu/AMDAPPSDK/assets/OpenVideo_Decode_API.PDF OpenVideo Decode (OVD) API
[edit] External links
- http://www.freedesktop.org/wiki/Software/vaapi
- http://intellinuxgraphics.org/vaapi.html
- http://wiki.ubuntu.com/mobile-hw-decode
- Splitted-Desktop Systems patches to add VA API support to FFmpeg and MPlayer
- MPlayer, FFmpeg Gain VA-API Support
|
||||||||||||||||||||