Original author(s) | Nvidia |
---|---|
Developer(s) | freedesktop.org |
Initial release | September 17, 2009 [1] |
Stable release | 1.5 / March 7, 2022 [2] |
Written in | C, C++ |
Operating system | Cross-platform |
Type | |
License | MIT License |
Website | www |
Video Decode and Presentation API for Unix (VDPAU) is a royalty-free application programming interface (API) as well as its implementation as free and open-source library (libvdpau) distributed under the MIT License. [1] VDPAU is also supported by Nvidia. [3]
The VDPAU interface is to be implemented by device drivers, such as the Nvidia GeForce driver, nouveau, or amdgpu, to offer end-user software, such as VLC media player or GStreamer, a standardized access to available video decompression acceleration hardware in the form of application-specific integrated circuit (ASIC) blocks on graphics processing units (GPU), such as Nvidia's PureVideo or AMD's Unified Video Decoder and make use of it.
VDPAU is targeted at Unix-like operating systems (including Linux, FreeBSD, and Solaris). [4] [5] [6]
VDPAU allows video programs to access the specialized video decoding ASIC on the GPU to offload portions of the video decoding process and video post-processing from the CPU to the GPU. [7]
Currently, the portions capable of being offloaded by VDPAU onto the GPU are motion compensation (mo comp), inverse discrete cosine transform (iDCT), VLD (variable-length decoding) and deblocking for MPEG-1, MPEG-2, MPEG-4 ASP (MPEG-4 Part 2), H.264/MPEG-4 AVC and VC-1, WMV3/WMV9 encoded videos. [4] Which specific codecs of these that can be offloaded to the GPU depends on the generation version of the GPU hardware.
VDPAU was originally designed by Nvidia for their PureVideo SIP block present on their GeForce 8 series and later GPUs. [8]
On March 9, 2015, Nvidia released VDPAU version 1.0 which supports High Efficiency Video Coding (HEVC) decoding for the Main, Main 4:4:4, Main Still Picture, Main 10, and Main 12 profiles. [9]
VDPAU is implemented in X11 software device drivers, but relies on acceleration features in the hardware GPU.
All Nvidia graphic cards for which the driver implements VDPAU are listed in Nvidia PureVideo. [10]
S3 Graphics added VDPAU to the Linux drivers of their Chrome 400 video cards. As of version 14.02.17 of its Linux device driver, VDPAU is available with the S3 Chrome 430 GT, S3 Chrome 440 GTX, S3 Chrome 530 GT and the S3 Chrome 540 GTX hardware. [11]
ATI/AMD released an open source driver for Radeon HD 4000+ graphic cards featuring VDPAU acceleration. [12] [13]
Intel does not offer VDPAU drivers, they only support their VA-API. It is, however, possible to use Intel's VA-API drivers by way of libvdpau-va-gl.
Nvidia hopes other GPU designers will make their products compatible with the open source VDPAU library and provide drivers with VDPAU acceleration by mentioning example names of hardware specific drivers for Intel and ATI: libvdpau_intel.so and libvdpau_ati.so. [14] Intel has stated they are considering VDPAU. [15]
sunxi SoCs (Allwinner) have experimental VDPAU implementation. [16]
Mesa as of v8.0 includes VDPAU for video cards that utilize Gallium3D.
As of late 2013, there is an independently developed back-end driver that in turn uses OpenGL (for drawing and scaling), and VA-API if available (for decoding). [17] It has been reported to work on some Intel graphics and Adobe Flash Player. [18]
The accelerated scaling with just OpenGL functionality is needed mostly because of Flash player, which uses un-accelerated scaling if VDPAU is unavailable. Almost all other video software that runs on Linux or FreeBSD supports Xv. It's essential for full-screen video on slower computers without native VDPAU support.
The VDPAU to VA-API translation for HW decoding is useful with recent Intel graphics hardware, as some software supports HW decoding through VDPAU but not VA-API.
VDPAU can also be used as a backend for VA-API and OpenMAX IL, which themselves cover a subset of the VDPAU capabilities; so any software that uses the VA-API or OpenMAX IL is also partly capable of using VDPAU (e.g., VLC media player). [31]
Nvidia VDPAU Feature Sets [32] are different hardware generations of GPU's supporting different levels of (Nvidia PureVideo) hardware decoding capabilities. For feature sets A, B and C, the maximum video width and height are 2048 pixels, minimum width and height 48 pixels, and all codecs are currently limited to a maximum of 8192 macroblocks (8190 for VC-1/WMV9). Partial acceleration means that VLD (bitstream) decoding is performed on the CPU, with the GPU only performing IDCT, motion compensation and deblocking. Complete acceleration means that the GPU performs all of VLD, IDCT, motion compensation and deblocking.
The libvdpau standalone VDPAU library is distributed by Nvidia independently of their proprietary Linux graphics driver in an effort to help the adoption of VDPAU by those outside of Nvidia. This open source library package contains a wrapper library and a debugging library allowing other manufacturers to implement VDPAU in their device drivers. [8] [36] [37] [38]
A graphics processing unit (GPU) is a specialized electronic circuit initially designed for digital image processing and to accelerate computer graphics, being present either as a discrete video card or embedded on motherboards, mobile phones, personal computers, workstations, and game consoles. After their initial design, GPUs were found to be useful for non-graphic calculations involving embarrassingly parallel problems due to their parallel structure. Other non-graphical uses include the training of neural networks and cryptocurrency mining.
OpenMAX, often shortened as "OMX", is a non-proprietary and royalty-free cross-platform set of C-language programming interfaces. It provides abstractions for routines that are especially useful for processing of audio, video, and still images. It is intended for low power and embedded system devices that need to efficiently process large amounts of multimedia data in predictable ways, such as video codecs, graphics libraries, and other functions for video, image, audio, voice and speech.
Mesa, also called Mesa3D and The Mesa 3D Graphics Library, is an open source implementation of OpenGL, Vulkan, and other graphics API specifications. Mesa translates these specifications to vendor-specific graphics hardware drivers.
A free and open-source graphics device driver is a software stack which controls computer-graphics hardware and supports graphics-rendering application programming interfaces (APIs) and is released under a free and open-source software license. Graphics device drivers are written for specific hardware to work within a specific operating system kernel and to support a range of APIs used by applications to access the graphics hardware. They may also control output to the display if the display driver is part of the graphics hardware. Most free and open-source graphics device drivers are developed by the Mesa project. The driver is made up of a compiler, a rendering API, and software which manages access to the graphics hardware.
DirectX Video Acceleration (DXVA) is a Microsoft API specification for the Microsoft Windows and Xbox 360 platforms that allows video decoding to be hardware-accelerated. The pipeline allows certain CPU-intensive operations such as iDCT, motion compensation and deinterlacing to be offloaded to the GPU. DXVA 2.0 allows more operations, including video capturing and processing operations, to be hardware-accelerated as well.
X-Video Motion Compensation (XvMC), is an extension of the X video extension (Xv) for the X Window System. The XvMC API allows video programs to offload portions of the video decoding process to the GPU video-hardware. In theory this process should also reduce bus bandwidth requirements. Currently, the supported portions to be offloaded by XvMC onto the GPU are motion compensation and inverse discrete cosine transform (iDCT) for MPEG-2 video. XvMC also supports offloading decoding of mo comp, iDCT, and VLD for not only MPEG-2 but also MPEG-4 ASP video on VIA Unichrome hardware.
CoreAVC was a proprietary codec for decoding the H.264/MPEG-4 AVC video format.
Unified Video Decoder is the name given to AMD's dedicated video decoding ASIC. There are multiple versions implementing a multitude of video codecs, such as H.264 and VC-1.
PureVideo is Nvidia's hardware SIP core that performs video decoding. PureVideo is integrated into some of the Nvidia GPUs, and it supports hardware decoding of multiple video codec standards: MPEG-2, VC-1, H.264, HEVC, and AV1. PureVideo occupies a considerable amount of a GPU's die area and should not be confused with Nvidia NVENC. In addition to video decoding on chip, PureVideo offers features such as edge enhancement, noise reduction, deinterlacing, dynamic contrast enhancement and color enhancement.
Video Acceleration API (VA-API) is an open source application programming interface 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 libva, combined with a hardware-specific driver, usually provided together with the GPU driver.
X-Video Bitstream Acceleration (XvBA), designed by AMD Graphics for its Radeon GPU and APU, is an arbitrary extension of the X video extension (Xv) for the X Window System on Linux operating-systems. XvBA API allows video programs to offload portions of the video decoding process to the GPU video-hardware. Currently, the portions designed to be offloaded by XvBA onto the GPU are currently motion compensation (MC) and inverse discrete cosine transform (IDCT), and variable-length decoding (VLD) for MPEG-2, MPEG-4 ASP, MPEG-4 AVC (H.264), WMV3, and VC-1 encoded video.
Intel Graphics Technology (GT) is the collective name for a series of integrated graphics processors (IGPs) produced by Intel that are manufactured on the same package or die as the central processing unit (CPU). It was first introduced in 2010 as Intel HD Graphics and renamed in 2017 as Intel UHD Graphics.
Intel Quick Sync Video is Intel's brand for its dedicated video encoding and decoding hardware core. Quick Sync was introduced with the Sandy Bridge CPU microarchitecture on 9 January 2011 and has been found on the die of Intel CPUs ever since.
Distributed Codec Engine (DCE) is an API and its implementation as software library ("libdce") by Texas Instruments. The library was released under the Revised BSD License and some additional terms.
Video Code Engine is AMD's video encoding application-specific integrated circuit implementing the video codec H.264/MPEG-4 AVC. Since 2012 it was integrated into all of their GPUs and APUs except Oland.
High Efficiency Video Coding implementations and products covers the implementations and products of High Efficiency Video Coding (HEVC).
Crystal HD is Broadcom's hardware semiconductor intellectual property (SIP) core that performs video decoding.
Nvidia NVENC is a feature in Nvidia graphics cards that performs video encoding, offloading this compute-intensive task from the CPU to a dedicated part of the GPU. It was introduced with the Kepler-based GeForce 600 series in March 2012.
Nvidia NVDEC is a feature in its graphics cards that performs video decoding, offloading this compute-intensive task from the CPU. NVDEC is a successor of PureVideo and is available in Kepler and later NVIDIA GPUs.
Video Core Next is AMD's brand for its dedicated video encoding and decoding hardware core. It is a family of hardware accelerator designs for encoding and decoding video, and is built into AMD's GPUs and APUs since AMD Raven Ridge, released January 2018.
{{cite web}}
: CS1 maint: archived copy as title (link)