VDPAU on VLC media player

While VLC media player has supported hardware-assisted video decoding for a few years, fully GPU-accelerated decoding, post-processing and rendering has proven a challenge for the traditional software architecture.

VLC version 2.1 and libavcodec version 54 introduced native support for hardware acceleration with VDPAU. This already slightly enhanced the performance over the previous solution using VAAPI and the vaapi/vdpau-driver (a.k.a. vdpau-va-driver) back-end: native VDPAU support avoids one extra memory copy for each decoded video frame.

But this was merely a stepping stone for more significant changes. The VLC development tree, i.e. the version 2.2 to be, now has full and automatic support for VDPAU post-processing and rendering. In addition to the usual colour space conversion and scaling, this also includes deinterlacing and inverse telecine, colour adjust, noise reduction and sharpening - all features of the VDPAU post-processing interface.

As for video codecs, MPEG-1, MPEG-2, MPEG-4 AVC/H.264 and WMV3/VC-1 are supported, depending on the capabilities of the graphic card. Unfortunately, MPEG-4 part 2 is held up by a limitation in contemporary libavcodec.

Getting VLC with VDPAU

VLC version 2.2.x

VDPAU on VLC has the following prerequisites:

Note that libva and va drivers are no longer required nor useful. Also note that older versions 0.4 and 0.5 of the libvdpau run-time library suffer bugs known to trigger crashes.

VLC version 2.1.x

The prerequisites are the same as for VLC 2.2, however only decoding will be accelerated with VDPAU. Furthermore, VDPAU needs to be selected explicitly in the VLC preferences (Tools, Preferences, Input / Codecs, Hardware-accelerated decoding), or from the command line:

vlc --avcodec-hw=any

VLC version 2.0.x or 1.1.x

Older VLC versions can only decode through VAAPI. VDPAU can be used indirectly through the VDPAU back-end for VA.

Note that VLC version 1.1 is no longer supported at the time of writing.