I'm pleased to announce a new video API for Unix and Unix-like platforms, and a technology preview implementation of this API from NVIDIA.
The API is called VDPAU (Video Decode and Presentation API for Unix). It provides a large subset of PureVideo HD functionality for NVIDIA
Linux, Solaris, and FreeBSD users.
The current API documentation is here:
Some highlights of VDPAU:
Defines an API for GPU-accelerated decode of MPEG-1, MPEG-2, H.264, and VC-1 bitstreams. Defines an API for post-processing of decoded video, including temporal and spatial deinterlacing, inverse telecine, and noise reduction. Defines an API for timestamp-based presentation of final video frames. Defines an API for compositing sub-picture, on-screen display, and other UI elements.
Note that VDPAU does not address content protection.
Some highlights/limitations of NVIDIA's current implementation:
Supported on NVIDIA GPUs with the NVIDIA second generation video processors or later (as of driver version 180.22, see the driver's README file for a list of supported GPUs). Currently, only one video stream can be decoded at a time; we hope to lift this restriction eventually. Available in 180.xx and later NVIDIA driver releases
The VDPAU support in the NVIDIA 180.xx release series is a preview. We are aware of cases of visual corruption and in some cases GPU hangs. We will be working on these issues over the next several NVIDIA driver releases. While NVIDIA's VDPAU implementation is not ready for end user use yet, it should be far enough along that interested application developers can begin working with it.
Various applications, such as ffmpeg, MPlayer, MythTV, xine, ... now support VDPAU, at least in some recent SVN versions.
NVIDIA originally developed patches for ffmpeg and MPlayer to demonstrate VDPAU. However, official ffmpeg and MPlayer SVN now include VDPAU support; we recommend that users use this instead of the NVIDIA patches. For posterity, the NVIDIA patches are available at
If other hardware vendors are interested, they are welcome to also provide implementations of VDPAU. The VDPAU API was designed to allow a vendor backend to be selected at run time.
As of driver release 180.22, the current list of supported GPUs is maintained in the README file distributed with the driver.