X-Git-Url: http://git.tdb.fi/?p=libs%2Fal.git;a=blobdiff_plain;f=source%2Fsounddecoder.cpp;h=ed9de800ffef84345faf133260080a9aa9eb6b96;hp=e0a56d3a4fc1513d21e6b99eada7f26c262903db;hb=HEAD;hpb=1e7141871d33e3e184456ba063fcf3448a8cc12a diff --git a/source/sounddecoder.cpp b/source/sounddecoder.cpp index e0a56d3..ed9de80 100644 --- a/source/sounddecoder.cpp +++ b/source/sounddecoder.cpp @@ -1,8 +1,12 @@ #include #include #include -#include "mp3decoder.h" -#include "oggdecoder.h" +#ifdef WITH_LIBMAD +#include "mad/mp3decoder.h" +#endif +#ifdef WITH_LIBVORBIS +#include "vorbis/oggdecoder.h" +#endif #include "sounddecoder.h" using namespace std; @@ -42,21 +46,25 @@ SoundDecoder *SoundDecoder::open_io(IO::Seekable &io) io.read(sig_buf, sizeof(sig_buf)); io.seek(0, IO::S_BEG); string signature(sig_buf, sizeof(sig_buf)); + +#ifdef WITH_LIBVORBIS if(OggDecoder::detect(signature)) return new OggDecoder(io); - else if(Mp3Decoder::detect(signature)) +#endif + +#ifdef WITH_LIBMAD + if(Mp3Decoder::detect(signature)) return new Mp3Decoder(io); - else +#endif + + string sig_hex; + for(unsigned i=0; i(sig_buf[i])); - } - throw unsupported_sound(sig_hex); + if(i) + sig_hex += ' '; + sig_hex += Msp::format("%02X", static_cast(sig_buf[i])); } + throw unsupported_sound(sig_hex); } } // namespace AL