I wrote a simple tool that fixes MP3 files with frames containing different block types between channels.
Some hardware players (including my Samsung SM85) have problems playing those files.
If you have very large MP3 collection reencoding is not a good idea, because of the quality loss.

The program is not fully tested yet. USE IT ON YOUR OWN RISK.

Description:
It basicaly does the following;
- decode file,
- encode it again without block differing,
- scans original file for problematic frames and
- replaces them with same frames from reencoded file.

I file doesn't have frames with different block types between channels, program skips processing them.
Program keeps ID3v1 & v2, but it recreates Xing header for VBR files. For CBR files it doesn't create Xing/Info header.
Program overwrites original file, so make sure you have backup.

Compile/Run:
Make sure that you have LAME instaled.
I managed to compile it and run only on Linux (as I don't develop under Windows).
It uses LAME library file (libmp3lame.so) so you have to compile the program using:
CODE
gcc -l mp3lame -lm -o MBfixer MBfixer.c frame.c

and run it using:
CODE
env LD_LIBRARY_PATH=/usr/local/lib/ ./MBfixer <file list>

I don't know how to compile/run it on Windows, so any help from some kind soul is welcome.

Download:
Download the source code form http://www.ambra.rs.ba/files/MBfixer.tar.gz

-----

If you find some problems/bugs (and you will), please inform me on tmp@ambra.rs.ba.
Keep in mind that I learned C programming couple months ago.

...and remember: ENCODE IN JOINT STEREO :-)