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: *** [stream_dvd.o] Error 1 make: 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.