The Video Acceleration State On Linux GPU Drivers

Written by Michael Larabel in Hardware on 5 February 2013 at 02:56 PM EST. 29 Comments
HARDWARE
For those of you curious about the state of hardware-assisted video playback acceleration on the Linux graphics drivers, here's a brief overview.

Recently in the forums a Phoronix reader assembled a concise overview of various features offered by the Intel VA-API driver, the AMD Catalyst driver with XvBA, and NVIDIA's proprietary driver with VDPAU.
VDPAU on nvidia:
H264
VC1
MPEG2
MPEG4
BOB deinterlacing
WEAVE
Temp/Spatial deinterlacing
Color Processing
constantly improving
implemented in: mythv, mplayer, xbmc, vlc, many more

XVBA on AMD:
H264
VC1
BOB deinterlacing
SDK pending since at least 2K11 (phoronix has had some articles)
implemented in: xbmc(PR pending), xvba-vaapi-wrapper (development stopped 1 year ago)


VAAPI on Intel Hardware:
H264
VC1
MPEG2
MPEG4
10bit Color transformation (? not really sure here - used to help decoding hi10p)
BOB deinterlacing
constantly improving
implemented in: vlc, mplayer-vaapi, totem, gstreamer, xbmc, many more

To finish:
Audio part:
Intel: DTS-HD,TrueHD, LPCM (might require kernel patch, SandyBridge++), 192000 via hdmi
Nvidia: DTS-HD,TrueHD, LPCM (>= ION-2), 192000 via hdmi
AMD: No Bitstream at all, LPCM only 2 Channels, more channels only possible via pseudo formats like AC3, DTS that are coded on two real channels max 48000h via hdmi (spdif is a bit better)
As I have written in Phoronix articles many times before, my particular recommendation for those HTPC users or anyone just watching many movies/videos on their Linux desktop is to use NVIDIA GeForce GPUs with the proprietary driver. NVIDIA VDPAU is widely-supported and tends to "just work" on any modern Linux distribution, the binary driver, and all popular Linux multimedia software like XBMC, VLC, and MPlayer. NVIDIA's Video Decode and Presentation API for Unix does a very good job at offloading the video decode work to the graphics hardware rather than the CPU. Even a very low-end GeForce GPU can get the job done.

AMD's XvBA (X-Video Bitstream Acceleration) has had an interesting history and came much later after NVIDIA introduced VDPAU to bid farewell to the now rather useless XvMC. XvBA still isn't too widely supported by Linux multimedia software directly but rather relies on out-of-tree patches or using the VA-API wrapper library that is no longer actively maintained. At least though the Catalyst driver support for XvBA has stabilized over the years. Catalyst/XvBA at least does a better job than the open-source drivers for video acceleration, but from my experience and also hearing the opinions of others, Linux users tend to be much happier in a NVIDIA/VDPAU combination.

If you're after an open-source HTPC Linux stack, Intel's open-source driver with Sandy Bridge or Ivy Bridge hardware is definitely the way to go. VA-API has matured quite well over the years and the Intel VA-API hardware driver continues to be advanced and very well supported. The VA-API acceleration interface has also become fairly well adopted by the important open-source video programs.

For Nouveau and Radeon driver users, there is the video acceleration state tracker with Gallium3D, but unfortunately using shaders rather than the dedicated video engines found on modern graphics processors. Some users get this working with success, but it's not as good as using NVIDIA/VDPAU or Intel/VA-API.
Related News
About The Author
Michael Larabel

Michael Larabel is the principal author of Phoronix.com and founded the site in 2004 with a focus on enriching the Linux hardware experience. Michael has written more than 20,000 articles covering the state of Linux hardware support, Linux performance, graphics drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and OpenBenchmarking.org automated benchmarking software. He can be followed via Twitter, LinkedIn, or contacted via MichaelLarabel.com.

Popular News This Week