VA-API
Video Acceleration API is a specification and open source library to provide hardware accelerated video encoding and decoding.
Contents
Supported hardware
Open source drivers:
- AMD Radeon 9500 and newer GPUs are supported by either the libva-vdpau-driver package or the libva-mesa-driver package, together with the mesa package.
- Intel GMA 4500 series and newer GPUs are supported by the libva-intel-driver package together with the mesa package.
- NVIDIA GeForce 8 series and newer GPUs are supported by the libva-vdpau-driver package together with the mesa package. It uses the nouveau-fwAUR package, which contains the required firmware to operate that is presently extracted from the NVIDIA binary driver.
Proprietary drivers:
- AMD Radeon HD 4000 series and newer GPUs are supported by the libva-xvba-driverAUR package. It uses the catalyst-utilsAUR driver for Radeon HD 5000 series and newer, and catalyst-total-hd234kAUR for Radeon HD 4000 series.
- NVIDIA GeForce 8 series and newer GPUs are supported by the libva-vdpau-driver package together with the nvidia-utils driver.
Supported formats
Open source | Proprietary | ||||
---|---|---|---|---|---|
AMD | Intel | Nvidia | AMD | Nvidia | |
MPEG2 decoding | Radeon 9500 and newer | GMA 4500 and newer | GeForce 8 and newer | Radeon HD 4000 and newer | GeForce 8 and newer |
MPEG4 decoding | Radeon HD 6000 and newer | GeForce 200 and newer | Radeon HD 6000 and newer | GeForce 200 and newer | |
H264 decoding | Radeon HD 4000 and newer | GMA 45001, Ironlake Graphics and newer | GeForce 8 and newer | Radeon HD 4000 and newer | GeForce 8 and newer |
VC1 decoding | Radeon HD 4000 and newer | Sandy Bridge Graphics and newer | GeForce 8200, 8300, 8400, 9300, 200 and newer | Radeon HD 4000 and newer | GeForce 8 and newer |
MPEG2 encoding | Ivy Bridge Graphics and newer | ||||
H264 encoding | Sandy Bridge Graphics and newer |
1Supported by the libva-intel-driver-g45-h264AUR package. See H.264 decoding on GMA 4500 for instructions and caveats.
In order to check what profiles (features) are supported by your GPU, you may want to read the #Verifying section.
Configuration
The driver used by VA-API is autodetected. To determine which one is used see #Verifying. You can override it by setting the LIBVA_DRIVER_NAME
environment variable:
- For Intel Graphics use
i965
. - For NVIDIA use
vdpau
. - For AMD use either
gallium
(for libva-mesa-driver) orvdpau
(for libva-vdpau-driver).
The installed drivers are in /usr/lib/dri/
.
Verifying
Verify the settings for VAAPI by running vainfo
, which is provided by the libva package:
$ vainfo
libva info: VA-API version 0.38.0 libva info: va_getDriverName() returns 0 libva info: User requested driver 'vdpau' libva info: Trying to open /usr/lib/dri/vdpau_drv_video.so libva info: Found init function __vaDriverInit_0_35 libva info: va_openDriver() returns 0 vainfo: VA-API version: 0.38 (libva 1.6.1) vainfo: Driver version: Splitted-Desktop Systems VDPAU backend for VA-API - 0.7.4 vainfo: Supported profile and entrypoints VAProfileMPEG2Simple : VAEntrypointVLD VAProfileMPEG2Main : VAEntrypointVLD VAProfileMPEG4Simple : VAEntrypointVLD VAProfileMPEG4AdvancedSimple : VAEntrypointVLD VAProfileH264Baseline : VAEntrypointVLD VAProfileH264Main : VAEntrypointVLD VAProfileH264High : VAEntrypointVLD VAProfileVC1Simple : VAEntrypointVLD VAProfileVC1Main : VAEntrypointVLD VAProfileVC1Advanced : VAEntrypointVLD
VAEntrypointVLD means that your card is capable to decode this format, VAEntrypointEncSlice means that you can encode to this format.
In this example the vdpau
driver is used, as you can see in this line:
libva info: Trying to open /usr/lib/dri/vdpau_drv_video.so
Supported software
- GStreamer based players - VA-API is used automatically, if supported format found.
- See more at http://docs.gstreamer.com/display/GstSDK/Playback+tutorial+8%3A+Hardware-accelerated+video+decoding.
- VLC media player: see VLC media player#Hardware acceleration support.
- Mpv: see Mpv#Hardware Decoding.
- MPlayer: see MPlayer#Enabling VA-API.