Выкладываю новую версию mgfaudio, отформатированный под mgf

Вот некоторые изменения:
1)Исправил баг в mp3player.c, связанный с потоками
2)Wav - при добавлении в плейлист загружаются в память и потом при указании имени проигрываются, так в разы быстрее
Небольшое описание :
Есть 3 подхода к использованию mgf_audio:
1) Можно просто проиграть любой файл:
MGFAUDIO *player=new MGFAUDIO();
player->PlayFile("super.mp3")
2) Можно с помощью Add добавить любые файлы (сейчас это MP3 и Wav) в плейлист, а затем с помощью Play(),Next(), Prev(),Pause(),Stop() ... проигрывать плейлист:
player->Add("super1.mp3")
player->Add("super2.wav")
player->Add("super3.mp3")
...
Play()
...
Next()
3) Можно сформировать плейлист
player->Add("super1.mp3")
player->Add("super2.wav")
player->Add("super3.mp3")
а затем используя Play(Index),Stop(Index) воспроизводить необходимый файл. Это очень полезно для звуковых эфектов, например я так использую:
enum{
SND_DROP=0,
SND_SCORE,
SND_GAMEOVER
};
snd=new MGFAUDIO(3);
snd->Add("SOUND/drop.wav");
snd->Add("SOUND/score.wav");
snd->Add("SOUND/gameover.wav");
а затем в нужном месте snd->Play(SND_SCORE), причем Wav файлы проигрываются независимо друг от друга, то есть микшируются, сейчас поставил до 20 одновременно, если snd->Play вызывает mp3, то текущий проигрыеваемый mp3 остановится и запустится выбранный, и это не
влияет на Wav.
Еще ввел признак окончания проигрывания StopType:
MGF_HAND_STOP - это когда вручную вызывается Stop()
MGF_END_PLAYLIST - когда заканчивается плейлист
MGF_END_PLAYFILE - (сейчас только для MP3) когда заканчивается проигрывание по PlayFile()
Для атоматического воспроизведения по плейлисту следующей мелодии
нужно поставить AutoNext=true, для обработки данного события
нужно вызывать Update() (временно, далее будет автоматически)
Для очищения плейлиста используется функция Clear() (не нужно при удалении объекта)