Ubuntu 10.04 AMD64 mplayer 开启ATI卡硬解加速

昨晚在Ubuntu 10.04(Lucid Lynx) AMD64上面设置ATI Mobile Readon 3470硬解加速成功,mplayer播放高清视频时CPU占有率大大降低,大约只有原来的1/10。使用Ubuntu 9.10时也曾经试图硬解,但没成功。具体设置/安装方法记叙如下。

首先A卡要支持UVD(Unified Video Decoder),比较新的显卡应该都是支持到UVD2的,另外Lucid自带的ATI驱动在我的机器上不支持UVD功能。
cat /var/log/Xorg.0.log | grep UVD
如果输出如下字样
(II) fglrx(0): UVD2 feature is available
则表明支持驱动UVD特性
我的卡子在未安装ATI官方最新驱动ATI Catalyst Display Driver 10.4以前是不支持UVD2的。ATI驱动如何安装请参考ATI官方文档。

A卡现在在linux平台上能够进行硬解得益于intel与开源社区开发的vaapi(Video Acceleration API),只要安装相应的后端驱动,vaapi可以支持A卡和N卡,A卡的后端就是xvba-video,N卡的后端是vdpau-video.

安装完ATI最新的官方驱动后,下载相应平台的libva包安装,当然也可以下载源码进行安装,http://www.splitted-desktop.com/~gbeauchesne/上有详细的说明。还要把libva的开发包一并安装,因为后面编译带vaavpi扩展的mplayer要用到。我安装的是最新的libva1_0.31.0-1+sds13_amd64.deb和libva-dev_0.31.0-1+sds13_amd64.deb

然后下载并安装xvba-video。安装完成后测试一下vaapi是否就绪
$ vainfo
我的输出如下
libva: libva version 0.31.0-sds6
Xlib: extension “XFree86-DRI” missing on display “:0.0”.
libva: va_getDriverName() returns 0
libva: Trying to open /usr/lib/va/drivers/fglrx_drv_video.so
libva: va_openDriver() returns 0
vainfo: VA API version: 0.31
vainfo: Driver version: Splitted-Desktop Systems XvBA backend for VA API – 0.6.11
vainfo: Supported profile and entrypoints
VAProfileMPEG2Simple : VAEntrypointIDCT
VAProfileMPEG2Main : VAEntrypointIDCT
VAProfileH264High : VAEntrypointVLD
VAProfileVC1Advanced : VAEntrypointVLD

最重要的是后面输出的profile,如果有内容输出应该问题就不大了。

最后就是让mplayer来支持vaapi了,发行版自带的版本目前是不支持此特性的,所以要重新编译。先执行
$sudo apt-get build-dep mplayer
然后下载mplayer-vaapi-latest-FULL.tar.bz2 ,解开后执行$ ./checkout-patch-build.sh即可。
编译完成后生成的mplayer在mplayer-vaapi目录下面。

$./mplayer -vo vaapi -va vaapi path_to_movie
如果有以下字样输出
VO: [vaapi] 1280×720 => 1280×720 H.264 VA API Acceleration
则说明硬件加速成功。
enjoy it!

7 thoughts on “Ubuntu 10.04 AMD64 mplayer 开启ATI卡硬解加速

  1. 不好意思,我按照這邊的方式作,但是用vainfo檢查狀況是否就緒,我得到這樣的結果︰
    $ vainfo
    libva: libva version 0.31.0-sds6
    Xlib: extension “XFree86-DRI” missing on display “:0.0”.
    libva: va_getDriverName() returns 0
    libva: Trying to open /usr/lib/va/drivers/fglrx_drv_video.so
    libva error: dlopen of /usr/lib/va/drivers/fglrx_drv_video.so failed: libva-0.31.0.5.so.1: cannot open shared object file: No such file or directory
    libva: va_openDriver() returns -1
    vaInitialize failed with error code -1 (unknown libva error),exit

    有錯誤,但是錯誤在哪我不了解,我用的是32位元的Ubuntu,顯示卡是HD3470+HD3200內顯,開了CrossFire

    請問這是怎一回事?

  2. 我也遇到同樣問題…解決方法是當初ati官方的driver我是用產生deb的方式做…後來看國外的網頁說要用直接跑ati.~~.run的script..所以我解除安裝所有deb..刪除/etc/X11/xorg.conf..重開機後…執行ati~.run的script安裝再重開機..再安裝最新的libva1和libva-dev和xvba-video..就可以了…我竟然回了前一年的文@@

  3. @Max

    你是怎么解除所有安装deb包的?我的不行哦。
    我用了sudo apt-get remove –purge fglrx。

    我再安装.run的时候,安装总是出错:
    Uninstalling any previously installed drivers.
    Unloading radeon module…
    ERROR: Module radeon is in use
    Unloading drm module…
    ERROR: Module drm is in use by radeon,ttm,drm_kms_helper
    [Message] Kernel Module : Trying to install a precompiled kernel module.
    [Message] Kernel Module : Precompiled kernel module version mismatched.
    [Message] Kernel Module : Found kernel module build environment, generating kernel module now.
    AMD kernel module generator version 2.1
    doing Makefile based build for kernel 2.6.x and higher
    rm -rf *.c *.h *.o *.ko *.a .??* *.symvers
    make -C /lib/modules/3.2.0-24-generic-pae/build SUBDIRS=/lib/modules/fglrx/build_mod/2.6.x modules
    make[1]: 正在进入目录 `/usr/src/linux-headers-3.2.0-24-generic-pae’
    CC [M] /lib/modules/fglrx/build_mod/2.6.x/firegl_public.o
    /lib/modules/fglrx/build_mod/2.6.x/firegl_public.c: 在函数‘KCL_fpu_begin’中:
    /lib/modules/fglrx/build_mod/2.6.x/firegl_public.c:5812:28: 错误: ‘TS_USEDFPU’未声明(在此函数内第一次使用)
    /lib/modules/fglrx/build_mod/2.6.x/firegl_public.c:5812:28: 附注: 每个未声明的标识符在其出现的函数内只报告一次
    make[2]: *** [/lib/modules/fglrx/build_mod/2.6.x/firegl_public.o] 错误 1
    make[1]: *** [_module_/lib/modules/fglrx/build_mod/2.6.x] 错误 2
    make[1]:正在离开目录 `/usr/src/linux-headers-3.2.0-24-generic-pae’
    make: *** [kmod_build] 错误 2
    build failed with return value 2
    [Error] Kernel Module : Failed to compile kernel module – please consult readme.
    [Reboot] Kernel Module : update-initramfs

  4. 想当时直接从源里安装的驱动,就是最后播放时花屏……哦,我的显卡:
    01:00.0 VGA compatible controller: Advanced Micro Devices [AMD] nee ATI RV710 [Mobility Radeon HD 4500/5100 Series]

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.