My first contribution back to the opensource community (after using Linux for the last 11 years its about damn time).
Okay after being bugged by mythmusic on not working on a ppc I decided to sit down and figure this thing out. Especially since there appears to be 2 other people in the world that would love to have a mac-mini frontend to mythtv using linux. If you don't know the mac mini works fine with mplayer and the 1.2GHz is close to playing 1920x1080 xvid files without too many frame drops, but it would produce noise under mythmusic. The problem is that libmad returns little endian audio and the powerpc is a big endian machine. Simply compile minimad.c that comes with libmad on a ppc machine and see that it doesn't work. You get noise. I'm using 0.18.1 from gentoo on the mac mini. The mythmusic plugin code I used for my fixes came from: http://cvs.mythtv.org/trac/ I used the release-0-18-fixes to compile only mythmusic. I know vorbis file have the same problem, but I don't use them (I did test one), so I figure there is a similar fix that can be done in that file. The fix: swap lines 486 & 487 and 493 & 494 of maddecoder.cpp The diff (which is a little confusing): 486d485 < *(output_buf + output_at++) = ((sample >> 0) & 0xff); 487a487 > *(output_buf + output_at++) = ((sample >> 0) & 0xff); 493d492 < *(output_buf + output_at++) = ((sample >> 0) & 0xff); 494a494 > *(output_buf + output_at++) = ((sample >> 0) & 0xff); Original Code: while (samples--) { signed int sample; if (output_bytes + 4096 > globalBufferSize) { flush(); } sample = fix_sample(16, *left++); *(output_buf + output_at++) = ((sample >> 0) & 0xff); *(output_buf + output_at++) = ((sample >> 8) & 0xff); output_bytes += 2; if (channels == 2) { sample = fix_sample(16, *right++); *(output_buf + output_at++) = ((sample >> 0) & 0xff); *(output_buf + output_at++) = ((sample >> 8) & 0xff); output_bytes += 2; } } Big Endian Code (works on PPC): while (samples--) { signed int sample; if (output_bytes + 4096 > globalBufferSize) { flush(); } sample = fix_sample(16, *left++); *(output_buf + output_at++) = ((sample >> 8) & 0xff); *(output_buf + output_at++) = ((sample >> 0) & 0xff); output_bytes += 2; if (channels == 2) { sample = fix_sample(16, *right++); *(output_buf + output_at++) = ((sample >> 8) & 0xff); *(output_buf + output_at++) = ((sample >> 0) & 0xff); output_bytes += 2; } } Compile and enjoy the music on the mac-mini! -- Ryan S Oltman [EMAIL PROTECTED] www.ae.uiuc.edu Manager of System Services University of Illinois - Urbana Champaign _______________________________________________ mythtv-users mailing list [email protected] http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-users
