>>>>> Ryan Oltman writes: r> I submitted a patch which fixes ogg (tested) and flac(not tested). It is a r> complete diff of all the files from svn for it to compile on my mac-mini. I r> think settings.pro needs to be changed slightly, someone hardcoded some intel r> stuff in there. It also allows the endian type to be detected so it can be r> used on either PPC or Intel.
r> http://cvs.mythtv.org/trac/ticket/1024 r> I have not investigated wether or not it encodes correctly. Essentially mp3 r> and an occasional ogg file is all I'll ever play on it. I haven't tested FLAC either but are you sure about the byte-shifting for 8-bit audio (~line 105 of flacdecoder.cpp)? Aren't the buffer values just bytes in this mode? Anyway, I found a couple of other places that need byte swapping: the AAC decoder and the Synaesthesia visualizer. I have tested both with FC4 ppc. Change the ifdef's to your preference: Index: mythmusic/mythmusic/synaesthesia.cpp =================================================================== --- mythmusic/mythmusic/synaesthesia.cpp (revision 8267) +++ mythmusic/mythmusic/synaesthesia.cpp (working copy) @@ -620,8 +620,13 @@ int i = outWidth / 4; do { +#ifdef __BIG_ENDIAN__ + register unsigned int const r2 = *(ptrOutput++); register unsigned int const r1 = *(ptrOutput++); +#else + register unsigned int const r1 = *(ptrOutput++); register unsigned int const r2 = *(ptrOutput++); +#endif register unsigned int const v = ((r1 & 0x000000f0ul) >> 4) | ((r1 & 0x0000f000ul) >> 8) | ((r1 & 0x00f00000ul) >> 12) | Index: mythmusic/mythmusic/aacdecoder.cpp =================================================================== --- mythmusic/mythmusic/aacdecoder.cpp (revision 8267) +++ mythmusic/mythmusic/aacdecoder.cpp (working copy) @@ -553,8 +553,13 @@ short *sample_buffer16 = (short*)char_buffer; for(uint i = 0; i < sample_count; i++) { +#ifdef __BIG_ENDIAN__ + output_buf[output_at + (i*2)] = (char)((sample_buffer16[i]) >> 8 & 0xFF); + output_buf[output_at + (i*2) + 1] = (char)(sample_buffer16[i] & 0xFF); +#else output_buf[output_at + (i*2)] = (char)(sample_buffer16[i] & 0xFF); output_buf[output_at + (i*2) + 1] = (char)((sample_buffer16[i] >> 8) & 0xFF); +#endif } if (sample_count > 0) -- Gregorio Gervasio, Jr. _______________________________________________ mythtv-users mailing list [email protected] http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-users
