I have it working with integer only streaming of mp3 and wma. I'm listing to XM Online at the moment, it sounds much better over the internet than from the satelite. WMA takes about 50-55% cpu decoding 64.0 kbit WMA. MP3 takes a bit less (you have to run mplayer with "-ac ffmp3" to get the integer only decoder.)
It was a major pain to get working but somehow I did it.
Anyone want a binary distribution?
Before I forget, here's how I did it:
1. Install a chroot debian potato (2.3) environment on the central. There are instructions on how to do this on this site.
2. Upgrade to binutils-2.16.1. You may be able to go with an even newer binutils with a newer gcc, but I haven't tried.
3. Upgrade to gcc-3.4.6 in your chroot. Download the source from gcc.gnu.org.
./configure --enable-languages=c,c++,f77
This disables gcj (java) and some other stuff. Compiling gcj requires more RAM than the central has.
4. Download the integer wma patch from:
http://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/2008-April/057292.htmlLook at the bottom of the email for the patch.
5. Get the svn of mplayer from 2007-10-01.
svn checkout -r {2007-10-01} [url=svn://svn.mplayerhq.hu/mplayer/trunk][url=svn://svn.mplayerhq.hu/mplayer/trunk][url=svn://svn.mplayerhq.hu/mplayer/trunk]svn://svn.mplayerhq.hu/mplayer/trunk[/url][/url][/url] mplayer
6. Apply the patch, it should apply with no conflicts.
7. Update mplayer via svn to current. Fix the conflicts. I leave this part as an exercise for the reader.
8. Fix configure to properly detect the armv41 cpu.
You will have to add "&& tmp_run" to each of the ARM detection sections. The original detection may work on the updated gcc, but I haven't checked yet
echocheck "ARMv5TE (Enhanced DSP Extensions)"
if test $_armv5te = "auto" ; then
cat > $TMPC << EOF
int main(void) { __asm__ volatile ("qadd r0, r0, r0"); return 0; }
EOF
_armv5te=no
cc_check && tmp_run && _armv5te=yes
fi
echores "$_armv5te"
9. You may have to compile mpegvideo_enc.c, swscale.c and snow.c with no optimizations (-O0). When you get to the point where your machine is locked from gcc taking all your ram and swap, hit cntl-c and run:
make CFLAGS="<cut and paste the flags from the make output, change -O4 to -O0>"
After that file compiles, hit control-c and run plain "make" again.
10. Had to define INFINITY in nellymoser.c. I have no clue what it is supposed to be, but I assigned to 0. I'd prefer to not compile the nellymoser codec, but the build doesn't allow.
11. Comment out setting the number of audio channels because jupiter doesn't implement it. Mplayer chokes if it can't set the channels.
Change in ao_oss.c
Search for MSGTR_AO_OSS_CantSetChans and comment the relevant part out.
12. I configured mplayer with the following flags:
./configure --enable-libwma --disable-dvdnav --disable-dvdread --disable-dvdread-internal --disable-libdvdcss-internal --disable-libmpeg2 --cc=gcc --disable-sdl --disable-fbdev --disable-yuv4mpeg --disable-md5sum --disable-tga --disable-pnm --disable-tv --with-extraincdir=/usr/include --disable-png
13. Compile!