# HG changeset patch # User Chris Cannam # Date 1172751308 0 # Node ID 2b40f83e762775eb075a858c5ee28af823527ac8 # Parent 8133ae938704b36d7a7ecd54ac5709262b47b5c5 * Make audio file reader factory try for a reader based on the file's extension, before trying all readers * Remove some debug output diff -r 8133ae938704 -r 2b40f83e7627 base/RangeMapper.cpp --- a/base/RangeMapper.cpp Wed Feb 28 11:20:14 2007 +0000 +++ b/base/RangeMapper.cpp Thu Mar 01 12:15:08 2007 +0000 @@ -41,8 +41,8 @@ * (m_maxpos - m_minpos)); if (position < m_minpos) position = m_minpos; if (position > m_maxpos) position = m_maxpos; - std::cerr << "LinearRangeMapper::getPositionForValue: " << value << " -> " - << position << " (minpos " << m_minpos << ", maxpos " << m_maxpos << ", minval " << m_minval << ", maxval " << m_maxval << ")" << std::endl; +// std::cerr << "LinearRangeMapper::getPositionForValue: " << value << " -> " +// << position << " (minpos " << m_minpos << ", maxpos " << m_maxpos << ", minval " << m_minval << ", maxval " << m_maxval << ")" << std::endl; return position; } @@ -54,8 +54,8 @@ * (m_maxval - m_minval)); if (value < m_minval) value = m_minval; if (value > m_maxval) value = m_maxval; - std::cerr << "LinearRangeMapper::getValueForPosition: " << position << " -> " - << value << " (minpos " << m_minpos << ", maxpos " << m_maxpos << ", minval " << m_minval << ", maxval " << m_maxval << ")" << std::endl; +// std::cerr << "LinearRangeMapper::getValueForPosition: " << position << " -> " +// << value << " (minpos " << m_minpos << ", maxpos " << m_maxpos << ", minval " << m_minval << ", maxval " << m_maxval << ")" << std::endl; return value; } @@ -81,8 +81,8 @@ * (m_maxpos - m_minpos)); if (position < m_minpos) position = m_minpos; if (position > m_maxpos) position = m_maxpos; - std::cerr << "LogRangeMapper::getPositionForValue: " << value << " -> " - << position << " (minpos " << m_minpos << ", maxpos " << m_maxpos << ", ratio " << m_ratio << ", minlog " << m_minlog << ")" << std::endl; +// std::cerr << "LogRangeMapper::getPositionForValue: " << value << " -> " +// << position << " (minpos " << m_minpos << ", maxpos " << m_maxpos << ", ratio " << m_ratio << ", minlog " << m_minlog << ")" << std::endl; return position; } @@ -90,8 +90,8 @@ LogRangeMapper::getValueForPosition(int position) const { float value = powf(10, (position - m_minpos) / m_ratio + m_minlog); - std::cerr << "LogRangeMapper::getValueForPosition: " << position << " -> " - << value << " (minpos " << m_minpos << ", maxpos " << m_maxpos << ", ratio " << m_ratio << ", minlog " << m_minlog << ")" << std::endl; +// std::cerr << "LogRangeMapper::getValueForPosition: " << position << " -> " +// << value << " (minpos " << m_minpos << ", maxpos " << m_maxpos << ", ratio " << m_ratio << ", minlog " << m_minlog << ")" << std::endl; return value; } diff -r 8133ae938704 -r 2b40f83e7627 data/fileio/AudioFileReaderFactory.cpp --- a/data/fileio/AudioFileReaderFactory.cpp Wed Feb 28 11:20:14 2007 +0000 +++ b/data/fileio/AudioFileReaderFactory.cpp Thu Mar 01 12:15:08 2007 +0000 @@ -20,6 +20,7 @@ #include "MP3FileReader.h" #include +#include #include QString @@ -54,45 +55,95 @@ AudioFileReader *reader = 0; + // First try to construct a preferred reader based on the + // extension. If we can't identify one or it fails to load the + // file, fall back to trying all readers in no particular order. + + QString ext = QFileInfo(path).suffix().toLower(); + std::set extensions; + + WavFileReader::getSupportedExtensions(extensions); + if (extensions.find(ext) != extensions.end()) { + reader = new WavFileReader(path); + } + +#ifdef HAVE_MAD + if (!reader) { + extensions.clear(); + MP3FileReader::getSupportedExtensions(extensions); + if (extensions.find(ext) != extensions.end()) { + reader = new MP3FileReader + (path, true, MP3FileReader::CacheInTemporaryFile); + } + } +#endif +#ifdef HAVE_OGGZ +#ifdef HAVE_FISHSOUND + if (!reader) { + extensions.clear(); + OggVorbisFileReader::getSupportedExtensions(extensions); + if (extensions.find(ext) != extensions.end()) { + reader = new OggVorbisFileReader + (path, true, OggVorbisFileReader::CacheInTemporaryFile); + } + } +#endif +#endif + + if (reader) { + if (reader->isOK()) return reader; + if (reader->getError() != "") { + std::cerr << "AudioFileReaderFactory: Preferred reader for " + << "extension \"" << ext.toStdString() << "\" failed: \"" + << reader->getError().toStdString() << "\"" << std::endl; + } else { + std::cerr << "AudioFileReaderFactory: Preferred reader for " + << "extension \"" << ext.toStdString() << "\" failed" + << std::endl; + } + delete reader; + reader = 0; + } + reader = new WavFileReader(path); if (reader->isOK()) return reader; - if (reader->getError() != "") err = reader->getError(); + if (reader->getError() != "") { + std::cerr << "AudioFileReaderFactory: WAV file reader error: \"" + << reader->getError().toStdString() << "\"" << std::endl; + } else { + std::cerr << "AudioFileReaderFactory: WAV file reader failed" + << std::endl; + } delete reader; - if (err != "") { - std::cerr << "AudioFileReaderFactory: WAV file reader error: \"" - << err.toStdString() << "\"" << std::endl; - } - - #ifdef HAVE_OGGZ #ifdef HAVE_FISHSOUND - reader = new OggVorbisFileReader(path, true, - OggVorbisFileReader::CacheInTemporaryFile); + reader = new OggVorbisFileReader + (path, true, OggVorbisFileReader::CacheInTemporaryFile); if (reader->isOK()) return reader; - if (reader->getError() != "") err = reader->getError(); + if (reader->getError() != "") { + std::cerr << "AudioFileReaderFactory: Ogg file reader error: \"" + << reader->getError().toStdString() << "\"" << std::endl; + } else { + std::cerr << "AudioFileReaderFactory: Ogg file reader failed" + << std::endl; + } delete reader; - - if (err != "") { - std::cerr << "AudioFileReaderFactory: Ogg file reader error: \"" - << err.toStdString() << "\"" << std::endl; - } - #endif #endif #ifdef HAVE_MAD - reader = new MP3FileReader(path, true, - MP3FileReader::CacheInTemporaryFile); + reader = new MP3FileReader + (path, true, MP3FileReader::CacheInTemporaryFile); if (reader->isOK()) return reader; - if (reader->getError() != "") err = reader->getError(); + if (reader->getError() != "") { + std::cerr << "AudioFileReaderFactory: MP3 file reader error: \"" + << reader->getError().toStdString() << "\"" << std::endl; + } else { + std::cerr << "AudioFileReaderFactory: MP3 file reader failed" + << std::endl; + } delete reader; - - if (err != "") { - std::cerr << "AudioFileReaderFactory: mp3 file reader error: \"" - << err.toStdString() << "\"" << std::endl; - } - #endif return 0; diff -r 8133ae938704 -r 2b40f83e7627 plugin/FeatureExtractionPluginFactory.cpp --- a/plugin/FeatureExtractionPluginFactory.cpp Wed Feb 28 11:20:14 2007 +0000 +++ b/plugin/FeatureExtractionPluginFactory.cpp Thu Mar 01 12:15:08 2007 +0000 @@ -125,7 +125,7 @@ QString id = PluginIdentifier::createIdentifier ("vamp", soname, descriptor->identifier); rv.push_back(id); - std::cerr << "Found id " << id.toStdString() << std::endl; +// std::cerr << "Found id " << id.toStdString() << std::endl; ++index; }