Revision 158628331 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.1.0
| latest release date = {{release date|2012|05|29}}
| 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. It enables and provides access to graphics hardware ([[Graphics processing unit|GPU]]) acceleration for video processing. VA API is targeted at the [[X Window System]] on [[Unix]]-based [[operating system]]s (including [[Linux]], [[FreeBSD]], and [[Solaris (operating system)|Solaris]]). Accelerated processing includes [[Video codec|video decoding]], [[video coding|video encoding]], subpicture blending and rendering. The specification was originally designed by [[Intel]] for its [[Intel GMA|GMA (Graphics Media Accelerator)]] series of [[Graphics processing unit|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.<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>
VA API was designed with the purpose of some day fully replacing [[XvMC]], which used to be the Unix equivalent of the [[DirectX Video Acceleration|Microsoft Windows DirectX Video Acceleration (DxVA) API]], and more.
==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 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 non-free 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 non-free 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>http://www.phoronix.com/scan.php?page=news_item&px=MTA0NDI VA-API Video Acceleration On Intel Medfield</ref>
* The non-free drivers Intel [[Mobile_Internet_device#Medfield_platform_.282011.29|Medfield]] [[System-on-a-chip|SoC]]s with [[Imagination Technologies]]'s [[PowerVR]]-based integrated graphics.<ref>http://www.phoronix.com/scan.php?page=news_item&px=MTA0NDI VA-API Video Acceleration On Intel Medfield</ref>
* The free 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).
* Additionally, [[VDPAU|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.<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>
==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 (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 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 [[Graphics processing unit|GPU]] for [[Video codec|decoding]] 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. -->
"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 ==
<!-- 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://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=158628331.
![]() ![]() 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.
|