Video Acceleration API: Difference between revisions

Content deleted Content added
Monkbot (talk | contribs)
m Task 18 (cosmetic): eval 23 templates: hyphenate params (14×);
Line 17:
'''Video Acceleration API''' ('''VA-API''') is an [[open source]] [[Application programming interface|API]] that allows applications such as [[VLC media player]] or [[GStreamer]] to use hardware video acceleration capabilities, usually provided by the [[graphics processing unit]] (GPU). It is implemented by the [[free and open-source]] [[Library (computing)|library]] <tt>libva</tt>, combined with a hardware-specific driver, usually provided together with the GPU driver.
 
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 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 name="ReferenceA">{{cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=MTA0NDI|title=VA-API Video Acceleration On Intel Medfield - Phoronix|website=Phoronix.com|accessdateaccess-date=23 February 2019}}</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 eventually replacing the [[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 Intel-specific hardware or GPUs.<ref>{{cite web|url=https://events.linuxfoundation.org/images/stories/pdf/lceu2012_debski.pdf|title=Video4Linux2: Path to a Standardized Video Codec API|website=Events.linuxfoundation.org|accessdateaccess-date=23 February 2019}}</ref> 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.<ref name="lwn.net">{{cite web |url=https://lwn.net/Articles/339349/ |title=VA API slowly, but surely, making progress |author=Nathan Willis |date=2009-07-01 |website=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">{{cite web|url=https://www.phoronix.com/scan.php?page=article&item=xorg_vaapi_mplayer&num=1|title=Mplayer, FFmpeg Gain VA-API Support - Phoronix|website=Phoronix.com|accessdateaccess-date=23 February 2019}}</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]], [[High Efficiency Video Coding|H.265/HEVC]], 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">{{cite web|url=https://www.freedesktop.org/wiki/Software/vaapi/|title=vaapi|website=Freedesktop.org|accessdateaccess-date=23 February 2019}}</ref>
 
=== Supported hardware and drivers ===
Line 67:
* [[Clutter (toolkit)]]
* [[Jellyfin]] media server
* [[Emby]] media server (starting from release 3.0.6400) <ref>{{cite web|url=http://emby.media/|title=Emby Server 3.0.6400 Released|date=29 August 2016|website=Emby.media|accessdateaccess-date=23 February 2019}}</ref>
* [[Helix (project)|Helix media player]] ([[Linux]])<ref>{{cite web|url=http://lists.moblin.org/pipermail/dev/2008-September/002750.html|title=Mailing list entry that describes uses of VA-API|website=Lists.moblin.org|accessdateaccess-date=23 February 2019}}</ref><ref>{{Cite web |url=https://community.helixcommunity.org/Licenses/realplayer_for_mid_faq.html |title=RealPlayer for MID & Intel/Linux FAQ |work=HelixCommunity.org |access-date=2011-05-12 |archive-url=https://web.archive.org/web/20120324001505/https://community.helixcommunity.org/Licenses/realplayer_for_mid_faq.html |archive-date=2012-03-24 |url-status=dead }}</ref>
* ''ffmpeg'', a command line tool from the [[FFmpeg]] project, supports VA-API encoding through CLI with version starting from 3.1 and also [[libavcodec]] (also part of the FFmpeg project) does contain code that other applications use to support hardware accelerated decoding, including VA-API.<ref>{{Cite web |url=https://raw.githubusercontent.com/FFmpeg/FFmpeg/master/Changelog |title=Archived copy |access-date=2016-08-31 |archive-url=https://web.archive.org/web/20160916205031/https://raw.githubusercontent.com/FFmpeg/FFmpeg/master/Changelog |archive-date=2016-09-16 |url-status=dead }}</ref>
* Fluendo <ref>{{cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=ODEwMw|title=Fluendo's New Codecs Support VDPAU, VA-API - Phoronix|website=Phoronix.com|accessdateaccess-date=23 February 2019}}</ref>
* [[Gnash (software)|Gnash]] Flash / [[SWF]] player<ref>{{cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=NzU1MA|title=H.264 VA-API GPU Video Acceleration For Flash - Phoronix|website=Phoronix.com|accessdateaccess-date=23 February 2019}}</ref>
* [[GStreamer]] through <tt>gstreamer-vaapi</tt><ref>{{cite web|url=https://cgit.freedesktop.org/gstreamer/gstreamer-vaapi|title=Hardware-accelerated video decoding, encoding and processing on Intel graphics through VA-API|website=Cgit.freedesktop.org|accessdateaccess-date=23 February 2019}}</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! -->
* [[Kodi (software)|Kodi]] (formerly XBMC Media Center) ([[Linux]])<ref name="phoronix.com">{{cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=ODEyNw|title=XBMC Gets Working Intel VA-API Support - Phoronix|website=Phoronix.com|accessdateaccess-date=23 February 2019}}</ref>
* [[Kodi (software)#Kodibuntu|Kodibuntu]] (formerly XBMC Live) (Linux Live CD/USB operating-system)<ref name="phoronix.com"/>
* [[MPlayer]] (v1 with patches)<ref>{{Cite web |url=https://gitorious.org/vaapi/mplayer |title=Archived copy |access-date=2014-02-10 |archive-url=https://web.archive.org/web/20130803044531/http://gitorious.org/vaapi/mplayer |archive-date=2013-08-03 |url-status=dead }}</ref> and its fork [[MPlayer#Forks|mpv]] (native)
* [[MythTV]] (starting from release 0.25)<ref>{{cite web|url=https://www.mythtv.org/wiki/Release_Notes_-_0.25|title=Release Notes - 0.25 - MythTV Official Wiki|website=Mythtv.org|accessdateaccess-date=23 February 2019}}</ref>
* [[VLC media player]] (starting from release 1.1.0)<ref>{{cite web|url=http://www.videolan.org/vlc/releases/1.1.0.html|title=VLC 1.1.0 release - VideoLAN|website=Videolan.org|accessdateaccess-date=23 February 2019}}</ref>
* Bluecherry DVR client (starting from release 2.2.6)<ref>{{cite web|url=http://www.bluecherrydvr.com/client-2-2-6-released-significant-cpu-usage-reductions-included/|title=[Client] 2.2.6 Released – Significant CPU usage reductions included|date=2 March 2017|website=Bluecherrydvr.com|accessdateaccess-date=23 February 2019}}</ref>
* [[Xine]] (via "''xine-lib-vaapi''" library) since Version 1.2.3 <ref>{{cite web|url=http://xine-project.org/news|title=the xine project - News Feed|website=Xine-project.org|accessdateaccess-date=23 February 2019}}</ref>
* [[Open Broadcaster Software]]<ref>{{Cite web|title=OBS Studio Now Supports VA-API For Video Encoding - Phoronix|url=https://www.phoronix.com/scan.php?page=news_item&px=OBS-Studio-VA-API-H264|access-date=2020-08-06|website=www.phoronix.com}}</ref>
* [[Firefox]] (On Wayland since release 78 and on X11 since release 80) <ref>{{Cite web|title=Firefox on Fedora finally gets VA-API on Wayland|url=https://mastransky.wordpress.com/2020/06/03/firefox-on-fedora-finally-gets-va-api-on-wayland/|access-date=2020-08-19|website=mastransky.wordpress.com}}</ref><ref>{{Cite web|title=Firefox 80 Available With VA-API On X11, WebGL Parallel Shader Compile Support|url=https://www.phoronix.com/scan.php?page=news_item&px=Firefox-80-Released|access-date=2020-08-25|website=www.phoronix.com}}</ref>