xine-vdpau – the first contact

A little HOWTO on how to make VDR using the new VDPAU hardware acceleration…

[UPDATE]Read here, how to install VDR on Karmic Koala with Binary Packages.[/UPDATE] Like I wrote here, the xine developer team is working on an own implementation of Nvidia’s VDPAU video display driver, which is an H.264 hardware acceleration.

I’ve downloaded (checked out revision #106) the first alpha release here:

mkdir /usr/local/src/
svn co svn://jusst.de/xine-vdpau

I’ve used this Nvidia vdpau driver. Version >=180.16 is the minimum version you need. Read here how to install this new Beta driver on a Unbuntu 8.10.

ftp://download.nvidia.com/XFree86/Linux-x86_64/180.16/NVIDIA-Linux-x86_64-180.16-pkg2.run

I’ve tried this on a Ubuntu 8.10 (Intrepid Ibex) x86_64, but before you read ahead: I didn’t succeed. I’ve managed to compile, but I can’t see anything. Still interested? Then keep reading.
(Btw. I’ll update this post, as soon I get it completely to work)
[UPDATE]
It’s working (not VDR), but keep reeding till the very end, there is the solution.

The proposed method in the README-VDPAU is:

cd xine-vdpau
./autogen.sh --prefix=/usr

But it didn’t work for me, I only got a bunch of compilation errors:

pp.c:33:27: error: postprocess.h: No such file or directory                                                                                                                               
pp.c:59: error: ‘PP_QUALITY_MAX’ undeclared here (not in a function)                                                                                                                      
pp.c:79: error: expected specifier-qualifier-list before ‘pp_context_t’             
.
.
pp.c:340: error: ‘post_plugin_pp_t’ has no member named ‘pp_mode’
mv -f .deps/xineplug_post_planar_la-denoise3d.Tpo .deps/xineplug_post_planar_la-denoise3d.Plo
make[3]: *** [xineplug_post_planar_la-pp.lo] Error 1
make[3]: *** Waiting for unfinished jobs....
mv -f .deps/xineplug_post_planar_la-eq.Tpo .deps/xineplug_post_planar_la-eq.Plo
mv -f .deps/xineplug_post_planar_la-eq2.Tpo .deps/xineplug_post_planar_la-eq2.Plo
mv -f .deps/xineplug_post_planar_la-unsharp.Tpo .deps/xineplug_post_planar_la-unsharp.Plo
mv -f .deps/xineplug_post_planar_la-noise.Tpo .deps/xineplug_post_planar_la-noise.Plo
make[3]: Leaving directory `/usr/local/src/xine-lib-vdpau/xine-vdpau/src/post/planar'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/usr/local/src/xine-lib-vdpau/xine-vdpau/src/post'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/local/src/xine-lib-vdpau/xine-vdpau/src'
make: *** [all-recursive] Error 1

I’ve tried a lot of stupid things, and came out with an also stupid, but compiling and linking version:

./autogen.sh --prefix=/usr CPPFLAGS="-I/usr/local/src/xine-vdpau/src/libffmpeg -I/usr/local/src/xine-vdpau/src/libffmpeg/libavutil -I/usr/local/src/xine-vdpau/src/libffmpeg/libavcodec -I/usr/local/src/xine-vdpau/src/libffmpeg/libavcodec/libpostproc"

The README (not README-VDPAU) propose to use any player, like ‘xine-ui, gxine, totem, …‘, so I decided to use xine-ui. This is how I got it:

cvs -d:pserver:anonymous@xine.cvs.sourceforge.net:/cvsroot/xine login
cvs -z3 -d:pserver:anonymous@xine.cvs.sourceforge.net:/cvsroot/xine co -P xine-ui

Now compilation and installation

./autogen.sh --enable-vdr-keys --prefix=/usr
make && make install

I’ve downloaded one sample (astrahd+.m2t) from here:

http://hftom.free.fr/video_samples/

But no matter how I tried to play it back, it didn't worked for me. There must be a little mistake I made.
I've tried the the lines below, and a few other combinations, but it didn't work. Since I'm not very familiar with xine, and didn't had time to peek into the source code, I don't have any clue how the playback have to be initiated correctly. Unfortunately there is nothing mentioned in the both READMEs and the Internet (Google) doen't either know anything. Well - I guess it's a bit too new right now.
This is what I've tried.
[UPDATE]This is wrong, leave out "-V vdpau_xxx", it's working automatically.

xine --no-logo --verbose -V vdpau_h264 astrahd+.m2t
xine --no-logo --verbose -V vdpau_mpeg12 astrahd+.m2t

11 thoughts on “xine-vdpau – the first contact

  1. Pingback: Mplayer-vdpau: Matroska (.mkv) and AVCHD (.mts) now both working | Acmelabs' Blog

  2. Bluray

    ./autogen.sh –prefix=/usr CPPFLAGS=”-I/usr/local/src/xine-vdpau/src/libffmpeg -I/usr/local/src/xine-vdpau/src/libffmpeg/libavutil -I/usr/local/src/xine-vdpau/src/libffmpeg/libavcodec -I/usr/local/src/xine-vdpau/src/libffmpeg/libavcodec/libpostproc”

    ./configure: line 2000: syntax error near unexpected token `”xine-lib”,’
    ./configure: line 2000: `AM_INIT_AUTOMAKE(“xine-lib”, $SPEC_VERSION)’

    can you help me ?

  3. acmelab68 Post author

    @Bluray
    your “autogen.sh” have to be in
    /usr/local/src/xine-vdpau
    or you have to update the CPPFLAGS accordingly to the location where your xine-vdpau currently on your hdd is.
    But that’s only a guess.

  4. Bluray

    I’m using Ubuntu 8.10 64bit, I spent the folder “xine-vdpau” to” / usr / local / src” but had to use sudo to run. / autogen.sh, because the folder where is the xine-vdpau is root
    ………..
    /usr/share/automake-1.7/am/depend2.am: AMDEP does not appear in AM_CONDITIONAL
    done.
    + Running autoconf: done.
    + Running ‘configure –prefix=/usr CPPFLAGS=-I/usr/local/src/xine-vdpau/src/libffmpeg -I/usr/local/src/xine-vdpau/src/libffmpeg/libavutil -I/usr/local/src/xine-vdpau/src/libffmpeg/libavcodec -I/usr/local/src/xine-vdpau/src/libffmpeg/libavcodec/libpostproc’:
    ./configure: line 2000: syntax error near unexpected token `”xine-lib”,’
    ./configure: line 2000: `AM_INIT_AUTOMAKE(“xine-lib”, $SPEC_VERSION)’
    toni@toni-desktop:/usr/local/src/xine-vdpau$

    gave the same thing

  5. acmelab68 Post author

    @Bluray
    Hmm, difficult to diagnose this, but here are my 2cent:

    1st, remove your xine installation:

    apt-get remove libxine1 libxine1-bin libxine1-dbg

    The following packages will be REMOVED:
    gxine gxineplugin libxine1 libxine1-bin libxine1-console libxine1-ffmpeg libxine1-misc-plugins libxine1-plugins
    libxine1-x libxine1-xvdr

    2nd, install at least these pachages:

    apt-get install autoconf libtool automake autoconf pkg-config gettext subversion
    apt-get install liba52-0.7.4-dev libmp3lame-dev libvorbis-dev zlib1g-dev libpng12-dev libx11-dev libxv-dev libasound2-dev libogg-dev
    apt-get install libxvidcore4-dev libtheora-dev libgsm1-dev libfaac-dev libfaad-dev

    3rd, you can also check the dependencies by

    apt-get build-dep xine-lib --dry-run

    4th. I'm using automake1.9, but this could be irrelevant.

    5th, use Google, if all above fails. I've read something about running 'aclocal' before compilation or stuff.

    Regards,
    Andreas

    PS: using /usr/local/src isn't really a good idea of mine, that's true. I've just wanted you to check the CPPFLAGS against your installed xine-vdpau path, that's all.

  6. SimonB

    How did you get your xine-lib-1.2 libraries linked properly so the vdpau got built?

    I can start xine with :
    xine –verbose=2 -V vdpau -A alsa –post vdr_video –post 001.vdr
    but it plays in xv “video_out_xv”

    I can even start with xine –verbose=2 -V biggirlsblouse -A alsa –post
    vdr_video –post vdr_audio –post upmix_mono 001.vdr
    and it still plays in xv with no errors.

    I’m using xine-lib-1.2 and patching with xine-lib-1.2-vdpau-r286.diff which
    was configured with:
    ./autogen.sh –with-vdpau –enable-debug –disable-optimizations –with-mpc=no

    then using xine-ui xine-ui-cvs-20090617220000 built with
    ./autogen.sh –enable-vdr-keys –disable-lirc

    My only library plugins are now xine-lib-1.2:
    ldconfig -p | grep xine
    libxine.so.2 (libc6,x86-64) => /usr/local/lib/libxine.so.2
    libxine.so (libc6,x86-64) => /usr/local/lib/libxine.so

    ls -l /usr/local/lib/libxine*
    -rwxr-xr-x 1 root root 825 2010-01-09 11:59 /usr/local/lib/libxine.la
    lrwxrwxrwx 1 root root 16 2010-01-09 11:59 /usr/local/lib/libxine.so ->
    libxine.so.2.0.0
    lrwxrwxrwx 1 root root 16 2010-01-09 11:59
    /usr/local/lib/libxine.so.2 -> libxine.so.2.0.0
    -rwxr-xr-x 1 root root 1118042 2010-01-09 11:59
    /usr/local/lib/libxine.so.2.0.0

    Kernel is:
    2.6.27.29-170.2.78.fc10.x86_64

    nvidia drivers are:
    kmod-nvidia-2.6.27.29-170.2.78.fc10.x86_64-180.60-1.fc10.1.x86_64
    xorg-x11-drv-nvidia-libs-180.60-1.fc10.x86_64

    Video card is:
    00:0d.0 VGA compatible controller: nVidia Corporation GeForce 6150SE nForce
    430 (rev a2) (prog-if 00 [VGA controller])
    Subsystem: Giga-byte Technology Device d000
    Flags: bus master, 66MHz, fast devsel, latency 0, IRQ 22
    Memory at f2000000 (32-bit, non-prefetchable) [size=16M]
    Memory at e0000000 (64-bit, prefetchable) [size=256M]
    Memory at f3000000 (64-bit, non-prefetchable) [size=16M]
    [virtual] Expansion ROM at 50000000 [disabled] [size=128K]
    Capabilities: [48] Power Management version 2
    Capabilities: [50] Message Signalled Interrupts: Mask- 64bit+
    Count=1/1 Enable-
    Kernel driver in use: nvidia
    Kernel modules: nvidia, nvidiafb

    Any ideas?? What am I doing wrong?

  7. SimonB

    Oh yeah, I’m also getting this…

    Everything appears to compile fine, but if I do:

    xine –list-plugins | grep vdpau

    I get nothing.

    Thanks
    Simon

  8. acmelab68

    @Simon

    I’m not building xine myself anymore, since it’s – and you know it now also – a real PITA. I’m using the “the-vdr-team” PPA repo for Ubuntu (Karmic Koala). This blog article is quite old, regarding the rapid development going on in this sector.
    But I guess you suffer the same, I suffered from the first time I’ve tried to build libxine on my own. Thas was, that I had to get rid off the libxine-1.x somehow. I was always linking against the old plugin libs, and there is no vdpau plugin.
    Run “xine –verpobe –no-logo” and be sure the plugins are 2.x and not 1.x or something. And check out the second page of this article carefully, especially where it comes to versions (2.0 and 1.x).

    Hope I could help.

    Regards,
    Andreas

Comments are closed.