Revision 158628354 of "Benutzer:Subamaggus/Video Acceleration API" on dewiki{{Cleanup|date=September 2009}}
{{Infobox software
| name = libVA
| title = libVA
| logo = <!-- [[File: ]] -->
| screenshot = <!-- [[File: ]] -->
| caption =
| collapsible =
| author =
| developer =
| released = <!-- {{Start date|YYYY|MM|DD|df=yes/no}} -->
| discontinued =
| latest release version = 1.0.16
| latest release date = {{release date|2012|08|02}}
| latest preview version =
| latest preview date = <!-- {{Start date and age|YYYY|MM|DD|df=yes/no}} -->
| frequently updated = <!-- DO NOT include this parameter unless you know what it does -->
| programming language = [[C (programming language)|C]]
| operating system = [[Unix-like]]
| platform =
| size =
| language =
| status =
| genre = [[Library (computing)|Library]]
| license =
| website = {{URL|http://www.freedesktop.org/wiki/Software/vaapi}}
}}
'''Video Acceleration API (VA API)''' is an [[open source]] software [[Library (computing)|library]] ("''libVA''") and [[Application programming interface|API]] specification. The [[cross-platform]] API enables and provides access to hardware accelerated video processing, using hardware like for example [[Graphics processing unit|Graphics Processing Units (GPU)]] to accelerate video processing in order to offload the [[Central processing unit|CPU (Central Processing Unit)]] to decode and encode [[Data compression|compressed]] [[digital video]].
VA API video decode/encode interface is platform and window system independent but is today primarily targeted at [[Direct Rendering Infrastructure|DRI (Direct Rendering Infrastructure)]] in [[X Window System]] on [[Unix]]-based [[operating system]]s (including [[Linux]], [[FreeBSD]], [[Solaris (operating system)|Solaris]]), and [[Android (operating system)|Android]], however it can potentially also be used with direct [[framebuffer]] and graphics sub-systems for video output. Accelerated processing includes support for [[Video codec|video decoding]], [[video coding|video encoding]], subpicture blending, and rendering.<ref>http://www.phoronix.com/scan.php?page=news_item&px=MTA0NDI VA-API Video Acceleration On Intel Medfield</ref>
The VA API specification was originally designed by [[Intel]] for its [[Intel GMA|GMA (Graphics Media Accelerator)]] series of [[Graphics processing unit|GPU]] hardware with the specific purpose of some day fully replacing [[XvMC]] standard as the default Unix multi-platform equivalent of [[DirectX Video Acceleration|Microsoft Windows DirectX Video Acceleration (DxVA) API]], but today the API is no longer limited to only GPUs nor to Intel specific hardware. Other hardware and manufacturers can freely use this open standard API for hardware accelerated video processing with their own hardware without paying royalty fee.<ref name="lwn.net">{{cite web |url=http://lwn.net/Articles/339349/ |title=VA API slowly, but surely, making progress |author=Nathan Willis |date=2009-07-01 |publisher=lwn.net}}</ref>
==Overview==
The main motivation for VA API is to enable hardware accelerated video decode at various entry-points ([[Variable-length code|VLD]], [[IDCT]], [[Motion Compensation]], [[Deblocking filter (video)|deblocking]]<ref name="MPlayer, FFmpeg Gain VA-API Support">[http://www.phoronix.com/vr.php?view=13300 MPlayer, FFmpeg Gain VA-API Support]</ref>) for the prevailing coding standards today ([[H.262/MPEG-2 Part 2|MPEG-2]], [[MPEG-4 Part 2|MPEG-4 ASP]]/[[H.263]], [[H.264/MPEG-4 AVC|MPEG-4 AVC/H.264]], and [[VC-1|VC-1/WMV3]]). Extending XvMC was considered, but due to its original design for MPEG-2 [[Motion Compensation|MotionComp]] only, it made more sense to design an interface from scratch that can fully expose the video decode capabilities in today's [[Graphics processing unit|GPU]]s.<ref name="freedesktop.org">[http://www.freedesktop.org/wiki/Software/vaapi freedesktop.org - Software/vaapi, About]</ref>
===Supported hardware and drivers===
As of January 17, 2012 VA API is natively supported by :
* The free and open source drivers of Broadcom Crystal HD (example of a non-GPU based hardware)<ref>http://gitorious.org/crystalhd-video CrystalHD backend for VA-API (libva)</ref>
* The free and open source drivers of the integrated graphics of known as "''Intel® HD Graphics''" (Intel HD Graphics 2000/2500/3000/4000) inside [[Intel Core|Intel Core i3 / i5 / i7 Processor Family (Nehalem, Sandy Bridge, Ivy Bridge microarchitecture based)]] processor family.<ref>http://intellinuxgraphics.org/h264.html Intel hardware-accelerated media decoding and encoding on Linux</ref>
* The free and open source drivers of the Intel [[List of Intel chipsets#Core 2 chipsets|G45 chipset (with Intel GMA X4500HD integrated graphics)]], and later<ref>http://intellinuxgraphics.org/documentation.html</ref>
* The closed source proprietary drivers for [[Intel]]'s [[Poulsbo (chipset)|Poulsbo Chipset]] with [[Imagination Technologies]]'s [[PowerVR]]-based [[GMA 500]] integrated graphics<ref>[http://www.phoronix.com/scan.php?page=news_item&px=NzAyOQ Intel's Poulsbo Driver A Bloody Mess?]</ref>
* The closed source proprietary drivers for [[List_of_Intel_Atom_microprocessors#Embedded_processors|Atom E6xx]] and [[List of Intel microprocessors#Intel 806xx product codes|Penwell]] based [[System-on-a-chip|SoC]]s are also supported via its ''Media Infrastructure Accelerator'' (MI-X).<ref name="ReferenceA">http://www.phoronix.com/scan.php?page=news_item&px=MTA0NDI VA-API Video Acceleration On Intel Medfield</ref>
* The closed source proprietary drivers Intel [[Mobile_Internet_device#Medfield_platform_.282011.29|Medfield]] [[System-on-a-chip|SoC]]s with [[Imagination Technologies]]'s [[PowerVR]] (VXD375/385 and VXE250/285) based integrated graphics.<ref name="ReferenceA"/>
* The closed source proprietary drivers of [[S3 Graphics]]'s [[S3 Graphics Chrome 400|Chrome 400]] and later series are also supported.<ref>[http://www.phoronix.com/scan.php?page=article&item=s3_linux_ogl3_vaapi&num=1 S3 Graphics Releases Linux Driver With OpenGL 3.0, VA API]</ref>
* In November 2009, VA-API also gained a new [[Proprietary software|proprietary]] backend named "''xvba-video''" which allows VA-API powered applications to take advantage of AMD Radeon's [[AMD Catalyst|proprietary fglrx drivers]] for its chipsets with [[Unified Video Decoder|UVD]]2 support via the [[XvBA]] library (X-Video Bitstream Acceleration API designed by AMD), for closed source proprietary driver only.
* Additionally, [[VDPAU|VDPAU (Video Decode and Presentation API for Unix)]], a competing API designed by [[NVIDIA]], can potentially also be 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.<ref>{{cite web
| url = http://www.phoronix.com/scan.php?page=article&item=xorg_vdpau_vaapi
| title = A NVIDIA VDPAU Back-End For Intel's VA-API
| accessdate = 2009-03-13
| author = [[Michael Larabel]]
| date = 2009-02-03
| work = [[Phoronix]]
}}</ref>
===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.
* Supports MPEG-2 decode acceleration Main Profile @ HL up to 80 Mbps
* Supports VC-1 / WMV3 decode acceleration Advanced Profile @ Level 3 up to 40 Mbps
* Supports [[MPEG-4 Part 2|MPEG-4 Part 2 (H.263)]] (a.k.a. MPEG-4 SP / MPEG-4 ASP, more commonly known as [[Xvid]]) decode acceleration up to 40 Mbps
* Supports H.264 AVC encode acceleration Main Profile @ L4.1 up to 40 Mbps
* Supports 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:
* [[Motion compensation]] (mocomp)
* [[Inverse discrete cosine transform]] (iDCT)
* In-loop [[deblocking filter (video)|deblocking filter]]
* Intra-frame prediction
* [[Huffman coding|Variable-Length Decoding]] (VLD), more commonly known as slice-level acceleration
* Bitstream processing ([[Context-adaptive variable-length coding|CAVLC]]/[[Context-adaptive binary arithmetic coding|CABAC]])
== Architecture ==
The current interface is window system independent, so that it can potentially be used with graphics sub-systems other than the [[Direct Rendering Infrastructure|DRI (Direct Rendering Infrastructure)]] in [[X Window System]], such as direct with [[framebuffer]], and it can work with third-party [[Digital rights management|DRM (Digital Rights Management)]] libraries. In a nutshell, it is a scheme to pass various types of data buffers from the application to the [[Graphics processing unit|GPU]] for [[Video codec|decoding or encoding]] a [[Elementary stream|compressed bit-stream]].
[[File:Vaapi illustration.svg]]
== Sources ==
<!-- STEP 3: All articles must cite at least one PUBLISHED, SPECIFIC, -->
<!-- THIRD-PARTY source for the information, such as a book or -->
<!-- a page on a reputable website. Please provide a URL or -->
<!-- link if you wish to use an internet source. WE MUST BE -->
<!-- ABLE TO VERIFY YOUR SOURCE, so sources such as "Google" or -->
<!-- "personal knowledge" will be rejected. -->
<!-- IF YOU DO NOT INCLUDE AT LEAST ONE VALID SOURCE, YOUR -->
<!-- ARTICLE WILL BE REJECTED. -->
<!-- Please add your source(s) below this line. -->
"The main motivation for VA-API (Video Acceleration API) is to enable hardware accelerated video decode/encode at various entry-points (VLD, IDCT, Motion Compensation etc.) for the prevailing coding standards today (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3)."
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 ==
<!-- MPlayer does not support VA-API, please see discussion -->
* [[Helix (project)|Helix media player]] ([[Linux]])<ref>[http://lists.moblin.org/pipermail/dev/2008-September/002750.html Mailing list entry that describes uses of VA-API]</ref><ref>https://community.helixcommunity.org/Licenses/realplayer_for_mid_faq.html RealPlayer for MID & Intel/Linux FAQ</ref>
* [[Clutter (toolkit)]]
* [[Gnash]] Flash / [[SWF]] player<ref>[http://www.phoronix.com/scan.php?page=news_item&px=NzU1MA .264 VA-API GPU Video Acceleration For Flash]</ref>
*
<!--As of May 12th, 2011, ffmpeg does not support VA-API (libavcodec contains code that allows other applications to use VA-API). Before changing the following sentence, please discuss on the Discussion page! -->
* ''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.<ref>[http://wiki.gnashdev.org/Hardware_Video_decoding Gnash uses libavcodec's VA-API code for hardware accelerated video decoding]</ref>
* [[Fluendo]]<ref>[http://www.phoronix.com/scan.php?page=news_item&px=ODEwMw Fluendo's New Codecs Support VDPAU, VA-API]</ref>
* [[XBMC Media Center]] ([[Linux]])<ref name="phoronix.com">[http://www.phoronix.com/scan.php?page=news_item&px=ODEyNw XBMC Gets Working Intel VA-API Support]</ref>
* [[XBMC Live]] (Linux Live CD/USB operating-system)<ref name="phoronix.com"/>
* [[VLC media player]] (starting from release 1.1.0)<ref>[http://www.videolan.org/vlc/releases/1.1.0.html VLC 1.1.0 release notes]</ref>
* [[MythTV]] (starting from release 0.25)<ref>[http://www.mythtv.org/wiki/Release_Notes_-_0.25 MythTV 0.25 release notes]</ref>
Some software may gain VA API support in the future : [[Lightspark]] (Flash / [[SWF]] player),<ref>{{en}} [https://bugs.launchpad.net/lightspark/+bug/859466 Bug report on Launchpad]</ref> [[GStreamer]] (via "''gstreamer-vaapi''" VA-API plugins for GStreamer)<ref>http://www.splitted-desktop.com/~gbeauchesne/gstreamer-vaapi/ gstreamer-vaapi - VA-API plugins for GStreamer</ref> and [[Xine]] (via "''xine-lib-vaapi''" library).<ref>{{en}} [http://old.nabble.com/VAAPI-support-for-xine-td32502350.html VAAPI support for Xine on xine-devel mailing list]</ref>
== See also ==
* [[VDPAU|VDPAU (Video Decode and Presentation API for Unix)]]
* [[X-Video Bitstream Acceleration|X-Video Bitstream Acceleration (XvBA)]]
* [[X-Video Motion Compensation]] (XvMC)
* [[DirectX Video Acceleration|DirectX Video Acceleration (DxVA) API]] - [[Microsoft Windows]] analogue
* [[Distributed Codec Engine|Distributed Codec Engine (libdce)]] 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.<ref>http://www.tuaw.com/2011/01/20/xbmc-for-ios-and-atv2-now-available/ XBMC for iOS and Apple TV now available</ref>
* [[OpenVideo Decode|OpenVideo Decode (OVD)]] – an new open cross-platform video acceleration API from [[AMD]].<ref>http://developer.amd.com/gpu/AMDAPPSDK/assets/OpenVideo_Decode_API.PDF OpenVideo Decode (OVD) API</ref>
* [[OpenMAX|OpenMAX IL (Open Media Acceleration Integration Layer)]] - a royalty-free cross-platform media abstraction API from the [[Khronos Group]]
* [[Nvidia PureVideo]] - the [[Stream processing|bit-stream technology]] from [[NVIDIA]] used in their graphics chips to accelerate video decoding on hardware [[Graphics processing unit|GPU]].
* [[Unified Video Decoder|UVD (Unified Video Decoder)]] - the [[Stream processing|bit-stream technology]] from [[ATI Technologies]] used in their graphics chips to accelerate video decoding on hardware [[Graphics processing unit|GPU]].
== References ==
{{reflist|2}}
== External links ==
* http://www.freedesktop.org/wiki/Software/vaapi
* [http://lwn.net/Articles/339349/ an overview article]
* http://intellinuxgraphics.org/vaapi.html
* http://wiki.ubuntu.com/mobile-hw-decode
* [http://www.splitted-desktop.com/~gbeauchesne/mplayer-vaapi/ Splitted-Desktop Systems patches to add VA API support to FFmpeg and MPlayer]
* [http://www.phoronix.com/scan.php?page=article&item=xorg_vaapi_mplayer/ MPlayer, FFmpeg Gain VA-API Support]
{{XWinSys}}
[[Category:Application programming interfaces]]
[[Category:Freedesktop.org]]
[[Category:Application layer protocols]]
[[Category:Video acceleration]]
[[Category:X Window extensions]]
[[es:Video Acceleration API]]
[[fr:Video Acceleration API]]All content in the above text box is licensed under the Creative Commons Attribution-ShareAlike license Version 4 and was originally sourced from https://de.wikipedia.org/w/index.php?oldid=158628354.
![]() ![]() This site is not affiliated with or endorsed in any way by the Wikimedia Foundation or any of its affiliates. In fact, we fucking despise them.
|