|
最近用arch看DVD,又听说intel的新驱动支持XvMC,禁不住折腾一番,写下一点心得。
希望有卡、有兴趣的弟兄帮忙测试,把问题反映上来。如果没问题,我会写进wiki
================================================
XvMC(X-Video Motion Compensation)是xv的一个扩展。它直接利用显卡对特定编码的
视频进行解码,从而降低CPU的负担。简单说就是硬解码。
从Intel的官方文档来看,使用当前版本的驱动,i810/815,i915/945和G33系列均可开启
XvMC。编码支持MPEG2--一般的DVD都是这种编码。
i830/845/855尚不明确。
整个过程大致可分成三步:
1.安装并配置驱动
需要最新的xf86-video-intel,版本号要高于或等于2.3.0
xorg默认是关闭XvMC的。为了开启它,我们要在/etc/X11/xorg.conf的显卡Device段
添加:
- Section "Device"
- Identifier "Videocard0"
- Driver "intel"
- [color=red]Option "XvMC" "true"[/color]
复制代码
如果你的显卡是i810/815,这样写:
- Section "Device"
- Identifier "Videocard0"
- Driver "intel"
- [color=red]Option "XvMCSurfaces" "7" [/color] # 数值写6也可以,参见intel的manpage
复制代码
在显卡驱动和XvMC库之间,需要一个被称为XvMCW(XvMC wrapper)的库作为接口。
xf86-video-intel的包里已经包含了这个库文件,只是还需要在/etc/X11/XvMCConfig文件中手动指定:
(如果没有这个文件请自行创建)
加入:
注意这里一定要写完整的路径。
做到这儿可以测试一下。重启x,运行:
- $cat /var/log/Xorg.0.log | grep Motion
复制代码
如果看到:
- (II) Loading extension XVideo-MotionCompensation
复制代码
就说明驱动已经配置好了。
2.播放器的支持
(我只会用mplayer,关于其它的播放器欢迎补充)
源里的mplayer并不支持xvmc,需要我们自己编译,最好当然是用ABS。
wiki中有详细的ABS说明。
在depends行:
- depends=('libxxf86dga' 'libxv' 'libmad' 'libungif' 'cdparanoia' 'gtk2'
- 'sdl' 'lame' 'libtheora' 'xvidcore'
- 'libgl' 'smbclient' 'aalib' 'jack-audio-connection-kit'
- 'x264>=20070616' 'faac' 'lirc-utils' 'ttf-dejavu')
复制代码
添加依赖libxvmc:
- depends=('libxxf86dga' 'libxv' 'libmad' 'libungif' 'cdparanoia' 'gtk2'
- 'sdl' 'lame' 'libtheora' 'xvidcore'
- 'libgl' 'smbclient' 'aalib' 'jack-audio-connection-kit'
- 'x264>=20070616' 'faac' 'lirc-utils' 'ttf-dejavu' [color=red]'libxvmc'[/color])
复制代码
给configure命令添加--enable-xvmc参数:
- ./configure --prefix=/usr --enable-gui --disable-arts --enable-x11 \
- --enable-runtime-cpudetection --confdir=/etc/mplayer --disable-nas \
- --enable-gl --enable-tv-v4l1 --enable-tv-v4l2 --enable-largefiles \
- --disable-liblzo --disable-speex --disable-openal \
- --disable-fribidi --disable-libdv --disable-musepack \
- --language=all --disable-dvdnav --disable-esd --disable-mga \
- --with-extraincdir=/usr/lib/live-media [color=red]--enable-xvmc[/color]
复制代码
保存、makepkg然后安装。
运行:
- $mplayer -vo help | grep xvmc
复制代码
如果看到
- xvmc XVideo Motion Compensation
复制代码
这样一行,就基本可以说是大功告成了。
3.播放测试
随便找一个MPEG2编码的视频文件test.mpeg,如果手头没有可以到这里下载
在终端输入:
- $mplayer [color=green]-vo xvmc[/color] [color=purple]-vc ffmpeg12mc[/color] /path/to/test.mpeg
复制代码
其中
-vo 指定用xvmc驱动输出视频
-vc 指定解码器,目前ffmpeg12mc是唯一的选择。
注意事项:
1.现在的驱动还只支持MPEG2,divx和h264就别想了
2.xvmc与composite效果有冲突,比如说在compiz下就无法输出图像
参考链接:
XvMC (MythTV wiki)
http://www.mythtv.org/wiki/index.php/XvMC
Enable XvMC for Nvidia video cards (Archwiki)
http://wiki.archlinux.org/index. ... _Nvidia_video_cards
Mplayer XvMC Faq v2
http://lists.mplayerhq.hu/piperm ... ecember/000474.html |
|