Video Acceleration API: Difference between revisions
Gamester17 (talk | contribs) |
Gamester17 (talk | contribs) No edit summary |
||
(3 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
'''Video Acceleration API (VA API)''' is a software API specification which provides access to [http://en.wikipedia.org/wiki/Graphics_processing_unit GPU] video-hardware acceleration for video processing. Accelerated processing includes video decoding, subpicture blending and rendering. | '''Video Acceleration API (VA API)''' is a software API specification which provides access to [http://en.wikipedia.org/wiki/Graphics_processing_unit GPU] video-hardware acceleration for video processing. Accelerated processing includes video decoding, subpicture blending and rendering. | ||
VA API is meant to some day replace [[XvMC]], [[XvMC]] which is the UNIX equivalent of the [[DirectX Video Acceleration|Microsoft Windows DirectX Video Acceleration (DxVA) API]]. The main motivation for VA API is to enable hardware accelerated video decode at various entry-points ([[ | VA API is meant to some day replace [[XvMC]], [[XvMC]] which is the UNIX equivalent of the [[DirectX Video Acceleration|Microsoft Windows DirectX Video Acceleration (DxVA) API]]. The main motivation for VA API is to enable hardware accelerated video decode at various entry-points ([[iDCT]], [[Motion Compensation]], [[Variable Length Decoding|VLD]], etc.) for the prevailing coding standards today ([[MPEG-2]], [[MPEG-4 ASP]]/[[H.263]], [[MPEG-4 AVC]]/[[H.264]], and [[VC-1]]/[[VC-1|VMW3]]). 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 GPUs. | ||
==Processes that could be accelerated== | ==Processes that could be accelerated== | ||
* Motion compensation | * [[Motion compensation|Motion compensation (mocomp)]] | ||
* [[Inverse discrete cosine transform | * [[Inverse discrete cosine transform|Inverse discrete cosine transform (iDCT)]] | ||
** [[Inverse telecine]] 3:2 and 2:2 pull-down correction | ** [[Inverse telecine]] 3:2 and 2:2 pull-down correction | ||
* | * Inverse [[modified discrete cosine transform]] (iMDCT) | ||
* In-loop [[deblocking]] | * In-loop [[deblocking filter (video)|deblocking filter]] | ||
* Intra-frame prediction | |||
* Inverse [[Quantization (image processing)|quantization]] (IQ) | * Inverse [[Quantization (image processing)|quantization]] (IQ) | ||
* [[ | * [[Huffman_coding|Variable-Length Decoding (VLD)]], more commonly known as slice-level acceleration | ||
* Spatial-temporal [[deinterlacing]] and automatic [[interlace]]/[[progressive scan|progressive]] source detection | * Spatial-temporal [[deinterlacing]] and automatic [[interlace]]/[[progressive scan|progressive]] source detection | ||
* Bitstream processing ([[CAVLC]]/[[CABAC]]) | |||
== Architecture == | == Architecture == | ||
Line 57: | Line 59: | ||
[[Category:Application programming interfaces]] | [[Category:Application programming interfaces]] | ||
[[Category:Application layer protocols]] | |||
[[Category:Freedesktop.org]] | [[Category:Freedesktop.org]] | ||
[[Category: | [[Category:Device drivers]] | ||
[[Category:FFmpeg]] |
Latest revision as of 03:03, 19 February 2008
Video Acceleration API (VA API) is a software API specification which provides access to GPU video-hardware acceleration for video processing. Accelerated processing includes video decoding, subpicture blending and rendering.
VA API is meant to some day replace XvMC, XvMC which is the UNIX equivalent of the Microsoft Windows DirectX Video Acceleration (DxVA) API. The main motivation for VA API is to enable hardware accelerated video decode at various entry-points (iDCT, Motion Compensation, VLD, etc.) for the prevailing coding standards today (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3). 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.
Processes that could be accelerated
- Motion compensation (mocomp)
- Inverse discrete cosine transform (iDCT)
- Inverse telecine 3:2 and 2:2 pull-down correction
- Inverse modified discrete cosine transform (iMDCT)
- In-loop deblocking filter
- Intra-frame prediction
- Inverse quantization (IQ)
- Variable-Length Decoding (VLD), more commonly known as slice-level acceleration
- Spatial-temporal deinterlacing and automatic interlace/progressive source detection
- Bitstream processing (CAVLC/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 GPU for decoding a compressed bit-stream. Feedback on this API is greatly welcomed, as this is intended to be a community collaborative effort.
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 lead 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 MPEG2." http://www.mythtv.org/wiki/index.php/XvMC
"Extending XvMC was considered, but due to its original design for MPEG-2 MoComp only, it made more sense to design an interface from scratch that can fully expose the video decode capabilities in today's GPUs." http://www.xboxmediacenter.com/wiki/index.php?title=Hardware_Accelerated_Video_Decoding
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
See also
- X-Video Motion Compensation (XvMC)
- DirectX Video Acceleration (DxVA) API - Microsoft Windows equivalent to VA API and XvMC