[SMPEG] Problems on Win32 - patch available

[Apologies, this has turned into a bit of a ramble! I am a newbie.]

I have been having problems playing some MP3 files with “plaympeg.exe”.
The audio contains clicks and dropouts which are particularly noticable
on headphones.

I originally used the current binaries of SDL.DLL (1.2.0) and
SMPEG.DLL (0.4.3) and used Microsoft Visual C++ 6.0 SP3 to compile
"plaympeg.exe".

The MP3 files in question are supplied with the DX8 SDK from MS
and (if you have the CD) are in the “dxf/samples/multimedia/media” folder.

“track3.mp3” MPEG-2 Layer3 56K 22050 Stereo <- Most noticable here
"track2.mp3" MPEG-2 Layer3 56K 22050 Stereo
"track1.mp3" MPEG-2 Layer3 56K 22050 Stereo

“piano.mp3” MPEG-1 layer3 128K 44100 stereo<- these two sound ok
"piano2.mp3" MPEG-1 layer3 128K 44100 stereo

http://www.johnnypops.demon.co.uk/highbias/isit.mp3 (1.25M) and
http://www.johnnypops.demon.co.uk/thedoorz/roadhouse_blues.mp3 (1.7M)
These are : MPEG-1 layer3 128K 44100 stereo but have severe clicks.

With some effort, I managed to compile everything from the sources with VC.
After fixing the “Segmentation Fault” produced when the filename isn’t
valid and sorting out that thread/800byte leak when a track finishes, I was
still suffering from “the clicks”, but had noticed that it didn’t happen
when in debug mode (Uh-oh!).

Very much later, I had narrowed it down to having “global optimizations"
switched on around a single function “void layer3reorder_2(…)” in
"audio/mpeglayer3.cpp”

This function is very odd (check it out!) and can be written in a much
simplified form.

I have put a “patch” file together (11K uncompressed), but am not sure
what I should do with it as I am a bit new to all this cvs, diff, patch
and Open-Source business.

If anyone has had similar problems or is curious about the suggested
changes,
please tell me how to deliver the patch (is a Zip attachment ok?)

Also, is it possible that the version of this function in SMPEG is a mangled
version to avoid “copyright” problems?

Maybe I should leave the function body alone and just switch off the
optimizer
around it?

TIA,
John.
[Currently using Windows 95 OSR2, on a K6-2-400 with CygWin and VC 6.0 SP3]

Very much later, I had narrowed it down to having “global optimizations"
switched on around a single function “void layer3reorder_2(…)” in
"audio/mpeglayer3.cpp”

This function is very odd (check it out!) and can be written in a much
simplified form.

I have put a “patch” file together (11K uncompressed), but am not sure
what I should do with it as I am a bit new to all this cvs, diff, patch
and Open-Source business.

Go ahead and send it to smpeg at lokigames.com

BTW, the memory leaks have been fixed in the current SMPEG CVS code.

Thanks!
-Sam Lantinga, Lead Programmer, Loki Software, Inc.