Mauriat Miranda     mjmwired

MPlayer compile on RedHat 8.0

I have a 4yr old Athlon-XP machine which I use as a Media Center/Home Theater PC. It is running RedHat 8.0 (heavily modified) with a Hauppauge PVR-250, MPlayer and some simple/buggy front end. Seeing as I designed it at the end of 2003, quite a bit of software is out of date.

The most critical componets are the ivtv driver that runs the PVR-250 and MPlayer. I won’t update the ivtv because I built it for a 2.4.24 kernel and I had to write my own recording application and my own scheduler daemon for recording TV. So as with all interdependent software - its easy to break something.

My MPlayer has been giving a great deal of trouble recently. It is running version 1.0pre5 which I beleive was released in 2004(?). Some of the MPEG2 recordings from the PVR-250 have some issues during playback. I’m hoping the problem will go away with an updated MPlayer, although I know I will get improvement with ivtv, but I can’t afford to do that.

The last “released” version of MPlayer was 1.0RC2. There are no available packages for RedHat 8, so I used my MPlayer compile guide. Since MPlayer only recently supported a GTK2 gui I chose to use a GTK1 gui since that’s what I had in Redhat 8. Virtually everything else was properly autodetected. So my configure step looked like this (quite simple):

[root@proteus MPlayer-1.0rc2]# ./configure --enable-gui \
--enable-largefiles \
--enable-gtk1

Unfortunately the make step (the compiling) broke with this error:

In file included from /usr/include/netdb.h:28,
                 from network.h:16,
                 from stream.h:65,
                 from stream_dvd.c:32:
/usr/include/netinet/in.h:259: parse error before '(' token
/usr/include/netinet/in.h:259: parse error before "__u32"
/usr/include/netinet/in.h:260: parse error before '(' token
/usr/include/netinet/in.h:260: parse error before "__u16"
/usr/include/netinet/in.h:262: parse error before '(' token
/usr/include/netinet/in.h:262: parse error before "__u32"
/usr/include/netinet/in.h:264: parse error before '(' token
/usr/include/netinet/in.h:264: parse error before "__u16"
stream_dvd.c: In function `dvd_parse_chapter_range':
stream_dvd.c:168: warning: passing arg 2 of `strtol' from incompatible pointer type
make[1]: *** [stream_dvd.o] Error 1
make[1]: Leaving directory `/root/dvr/mm/mplayer/MPlayer-1.0rc2/stream'
make: *** [stream/stream.a] Error 2

I hunted through the mplayer-users mailing list and found out that this is a problem with a Redhat being very old and basically no longer support. Someone suggested doing the following.

Edit /usr/include/netinet/in.h and at line 259, add following:

//mjm - to compile for MPlayerRC2
#undef ntohl
#undef ntohs
#undef htonl
#undef htons
//mjm

Then I was able to rerun the make. Then I reverted the file back to its original.

Some other things: I did also update to the latest release of XviD. I’m pretty sure that the ancient version of Xine is probably broken as well, but since I only used that to play DVD’s, I’d much rather use my Samsung DVD Player.

I know that RedHat 8 is forever out of date, so I’m updating the system to CentOS, but that’s been quite troublesome, more on that later.

Posted in: Multimedia, Red Hat,