Files
itgmania212121/stepmania/src/RageSoundReader.cpp
T
2003-09-13 01:34:34 +00:00

52 lines
1.3 KiB
C++

#include "global.h"
#include "RageSoundReader.h"
#include "RageUtil.h"
#ifndef NO_WAV_SUPPORT
#include "RageSoundReader_WAV.h"
#endif
#ifndef NO_MP3_SUPPORT
#include "RageSoundReader_MP3.h"
#endif
#if defined(OGG_ONLY)
#include "RageSoundReader_Vorbisfile.h"
#define RageSoundReader_LowLevel RageSoundReader_Vorbisfile
#else
#include "RageSoundReader_SDL_Sound.h"
#define RageSoundReader_LowLevel SoundReader_SDL_Sound
#endif
SoundReader *SoundReader::OpenFile( CString filename, CString error )
{
SoundReader_FileReader *NewSample = NULL;
/* XXX: First try based on extension. If that fails, try all other decoders.
* Optimally, we should have separate error returns indicating "this isn't
* an XXX file" vs. "this is an XXX file, but we don't support something in
* it", for better error string returns. */
#ifndef NO_WAV_SUPPORT
if( !GetExtension(filename).CompareNoCase("wav") )
NewSample = new RageSoundReader_WAV;
#endif
#ifndef NO_MP3_SUPPORT
if( !GetExtension(filename).CompareNoCase("mp3") )
NewSample = new RageSoundReader_MP3;
#endif
if( !GetExtension(filename).CompareNoCase("mp3") )
NewSample = new SoundReader_SDL_Sound;
if( NewSample == NULL )
NewSample = new RageSoundReader_LowLevel;
if( !NewSample->Open(filename) )
{
error = NewSample->GetError();
return NULL;
}
return NewSample;
}