Chris@148: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ Chris@148: Chris@148: /* Chris@148: Sonic Visualiser Chris@148: An audio file viewer and annotation editor. Chris@148: Centre for Digital Music, Queen Mary, University of London. Chris@202: This file copyright 2006 Chris Cannam and QMUL. Chris@148: Chris@148: This program is free software; you can redistribute it and/or Chris@148: modify it under the terms of the GNU General Public License as Chris@148: published by the Free Software Foundation; either version 2 of the Chris@148: License, or (at your option) any later version. See the file Chris@148: COPYING included with this distribution for more information. Chris@148: */ Chris@148: Chris@148: #include "AudioFileReaderFactory.h" Chris@148: Chris@148: #include "WavFileReader.h" Chris@148: #include "OggVorbisFileReader.h" Chris@148: #include "MP3FileReader.h" Chris@148: Chris@148: #include Chris@148: Chris@148: QString Chris@148: AudioFileReaderFactory::getKnownExtensions() Chris@148: { Chris@157: std::set extensions; Chris@157: Chris@157: WavFileReader::getSupportedExtensions(extensions); Chris@148: #ifdef HAVE_MAD Chris@157: MP3FileReader::getSupportedExtensions(extensions); Chris@148: #endif Chris@148: #ifdef HAVE_OGGZ Chris@148: #ifdef HAVE_FISHSOUND Chris@157: OggVorbisFileReader::getSupportedExtensions(extensions); Chris@148: #endif Chris@148: #endif Chris@157: Chris@157: QString rv; Chris@157: for (std::set::const_iterator i = extensions.begin(); Chris@157: i != extensions.end(); ++i) { Chris@157: if (i != extensions.begin()) rv += " "; Chris@157: rv += "*." + *i; Chris@157: } Chris@157: Chris@157: return rv; Chris@148: } Chris@148: Chris@148: AudioFileReader * Chris@148: AudioFileReaderFactory::createReader(QString path) Chris@148: { Chris@148: QString err; Chris@148: Chris@148: AudioFileReader *reader = 0; Chris@148: Chris@148: reader = new WavFileReader(path); Chris@148: if (reader->isOK()) return reader; Chris@148: if (reader->getError() != "") err = reader->getError(); Chris@148: delete reader; Chris@148: Chris@148: #ifdef HAVE_OGGZ Chris@148: #ifdef HAVE_FISHSOUND Chris@148: reader = new OggVorbisFileReader(path, true, Chris@148: OggVorbisFileReader::CacheInTemporaryFile); Chris@148: if (reader->isOK()) return reader; Chris@148: if (reader->getError() != "") err = reader->getError(); Chris@148: delete reader; Chris@148: #endif Chris@148: #endif Chris@148: Chris@148: #ifdef HAVE_MAD Chris@148: reader = new MP3FileReader(path, true, Chris@148: MP3FileReader::CacheInTemporaryFile); Chris@148: if (reader->isOK()) return reader; Chris@148: if (reader->getError() != "") err = reader->getError(); Chris@148: delete reader; Chris@148: #endif Chris@148: Chris@148: return 0; Chris@148: } Chris@148: