LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1837|回复: 4

为Intel显卡开启XvMC

[复制链接]
发表于 2008-6-21 19:39:13 | 显示全部楼层 |阅读模式
最近用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段
添加:

  1. Section "Device"
  2.         Identifier      "Videocard0"
  3.         Driver          "intel"
  4.         [color=red]Option          "XvMC"  "true"[/color]
复制代码

如果你的显卡是i810/815,这样写:

  1. Section "Device"
  2.         Identifier      "Videocard0"
  3.         Driver          "intel"
  4.         [color=red]Option          "XvMCSurfaces" "7" [/color]     # 数值写6也可以,参见intel的manpage
复制代码


在显卡驱动和XvMC库之间,需要一个被称为XvMCW(XvMC wrapper)的库作为接口。
xf86-video-intel的包里已经包含了这个库文件,只是还需要在/etc/X11/XvMCConfig文件中手动指定:
(如果没有这个文件请自行创建)

  1. #vi /etc/X11/XvMCConfig
复制代码

加入:

  1. /usr/lib/libIntelXvMC.so
复制代码

注意这里一定要写完整的路径。

做到这儿可以测试一下。重启x,运行:

  1. $cat /var/log/Xorg.0.log | grep Motion
复制代码

如果看到:

  1. (II) Loading extension XVideo-MotionCompensation
复制代码

就说明驱动已经配置好了。

2.播放器的支持

(我只会用mplayer,关于其它的播放器欢迎补充)

源里的mplayer并不支持xvmc,需要我们自己编译,最好当然是用ABS。
wiki中有详细的ABS说明。

在depends行:

  1. depends=('libxxf86dga' 'libxv' 'libmad' 'libungif' 'cdparanoia' 'gtk2'
  2.          'sdl' 'lame' 'libtheora' 'xvidcore'
  3.          'libgl' 'smbclient' 'aalib' 'jack-audio-connection-kit'
  4.          'x264>=20070616' 'faac' 'lirc-utils' 'ttf-dejavu')
复制代码

添加依赖libxvmc:

  1. depends=('libxxf86dga' 'libxv' 'libmad' 'libungif' 'cdparanoia' 'gtk2'
  2.          'sdl' 'lame' 'libtheora' 'xvidcore'
  3.          'libgl' 'smbclient' 'aalib' 'jack-audio-connection-kit'
  4.          'x264>=20070616' 'faac' 'lirc-utils' 'ttf-dejavu' [color=red]'libxvmc'[/color])
复制代码


给configure命令添加--enable-xvmc参数:

  1.   ./configure --prefix=/usr --enable-gui --disable-arts --enable-x11 \
  2.       --enable-runtime-cpudetection --confdir=/etc/mplayer --disable-nas \
  3.       --enable-gl --enable-tv-v4l1 --enable-tv-v4l2 --enable-largefiles \
  4.       --disable-liblzo --disable-speex --disable-openal \
  5.       --disable-fribidi --disable-libdv --disable-musepack \
  6.       --language=all --disable-dvdnav --disable-esd --disable-mga \
  7.       --with-extraincdir=/usr/lib/live-media [color=red]--enable-xvmc[/color]
复制代码


保存、makepkg然后安装。

运行:

  1. $mplayer -vo help | grep xvmc
复制代码

如果看到

  1. xvmc        XVideo Motion Compensation
复制代码

这样一行,就基本可以说是大功告成了。

3.播放测试

随便找一个MPEG2编码的视频文件test.mpeg,如果手头没有可以到这里下载

在终端输入:

  1. $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
发表于 2008-6-21 19:58:26 | 显示全部楼层
我的ATI的不支持了。。nv的好像也支持这个东西。。ATI解码在windows上那么强,linux上就只好干瞪眼了。。

不过应该马上就会有了。。4850都可以用开源驱动,还有什么不可能呢?
回复 支持 反对

使用道具 举报

发表于 2008-6-21 20:06:30 | 显示全部楼层
这个xvmc只支持mpeg。
回复 支持 反对

使用道具 举报

发表于 2008-6-21 20:55:19 | 显示全部楼层
ati似乎也有的。。不过从目前情况看来,基本没什么使用价值。。
回复 支持 反对

使用道具 举报

发表于 2008-6-22 00:26:03 | 显示全部楼层
只支持mpeg2的話似乎沒多大用,現在純軟解也不怎樣佔cpu了,除非是divx/h264
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表