This is Gentoo's testing wiki. It is a non-operational environment and its textual content is outdated.
Please visit our production wiki at https://wiki.gentoo.org
VDPAU
This article describes the setup of VDPAU (Video Decode and Presentation API for Unix).
Hardware support
Driver | Chipset |
---|---|
nvidia-drivers | GeForce 8 (2. Generation) PureVideo HD and newer |
S3 | Chrome 430 GT and newer |
Radeon | Support is available for r300 and newer |
Installation
Portage knows the global USE flag vdpau for enabling support for VDPAU in other packages. Enabling this USE flag will pull in x11-libs/libvdpau automatically:
/etc/portage/make.conf
USE="... vdpau ..."
The USE flags of libvdpau are:
USE flags for x11-libs/libvdpau VDPAU wrapper and trace libraries
doc
|
Add extra documentation (API, Javadoc, etc). It is recommended to enable per package instead of globally |
dri
|
Enable direct rendering: used for accelerated 3D and some 2D, like DMA |
test
|
Enable dependencies and/or preparations necessary to run tests (usually controlled by FEATURES=test but can be toggled independently) |
After setting this you want to update your system so the changes take effect:
root #
emerge --ask --changed-use --deep @world
In the case of Radeon driver you additionally need to do the following
Radeon specific install steps
By default applications such as mplayer,vlc,vdpauinfo,... make VDPAU specific calls via libvdpau library. This library then dynamically loads appropriate back-end driver ( VDPAU driver specific to your hardware read more...). At the time of writing the mechanism to automatically decide which back-end driver needs to be loaded was not established. Currently libvdpau is hardcoded to load nvidia backend driver. It means that VDPAU will not work properly on Radeon cards. The only possible way to change that behavior is by specifying the correct back-end driver manually.
- First you need to find the name of the driver related to your hardware
(here we assume that the vdpau USE flag was enabled and the system was updated successfully). One way to find that name is by checking Xorg log file:
user $
cat /var/log/Xorg.0.log | grep -i vdpau
The output will show if VDPAU driver has been initialized properly (two leading (II) letters in the sample output above). It also should specify the name of back-end driver (r300 in the sample output).
- Now you can manually setup the name of back-end driver with help of VDPAU_DRIVER environment variable.
To do that you need to add the following line to ~/.bashrc file (provided that Bash is the default shell of a user who is going to run graphical environment). For the sample case described above the mentioned line would look like:
~/.bashrc
Loged as a user who run graphical interfaceexport VDPAU_DRIVER=r300
.
- Now x11-misc/vdpauinfo should show you an information about your VDPAU configuration instead of an error message.
user $
vdpauinfo
API version: 1
Information string: G3DVL VDPAU Driver Shared Library version 1.0
Video surface:
name width height types
420 2048 2048 NV12 YV12
422 2048 2048 NV12 YV12
444 2048 2048 NV12 YV12 Y8U8V8A8 V8U8Y8A8
Decoder capabilities:
name level macbs width height
MPEG1 16 16384 2048 2048
MPEG2_SIMPLE 16 16384 2048 2048
MPEG2_MAIN 16 16384 2048 2048
...Other Software
- x11-misc/vdpauinfo: shows if VDPAU is supported.
- VDPAU can be used as a VAAPI backend.
Nvidia Specific Steps
With proprietary driver vdpau works out of the box. But nouveau driver requires firmvare:
root #
emerge nvidia-firmware
Configuration
You may need to tweak the config files of the programs, you can make use of VDPAU.
mplayer
Detect the available VDPAU video codecs:
user $
mplayer -vc help | grep --color vdpa
Add them to the mplayer config file, e.g.:
/etc/mplayer/mplayer.conf
[vo.vdpau] vc=ffh264vdpau,ffodivxvdpau,ffmpeg12vdpau,
The comma at the end of the
vc
line is important! This tells MPlayer to fall back to other video out methods if the VDPAU driver is unsuccessful