diff data/fileio/AudioFileReaderFactory.cpp @ 327:1d656dcda8ef

* some tweaks to improve usability of these classes in a console application
author Chris Cannam
date Fri, 02 Nov 2007 16:50:31 +0000
parents c324d410b096
children e6d11871e4c9
line wrap: on
line diff
--- a/data/fileio/AudioFileReaderFactory.cpp	Thu Nov 01 16:02:01 2007 +0000
+++ b/data/fileio/AudioFileReaderFactory.cpp	Fri Nov 02 16:50:31 2007 +0000
@@ -56,9 +56,21 @@
 AudioFileReader *
 AudioFileReaderFactory::createReader(FileSource source, size_t targetRate)
 {
+    return create(source, targetRate, false);
+}
+
+AudioFileReader *
+AudioFileReaderFactory::createThreadingReader(FileSource source, size_t targetRate)
+{
+    return create(source, targetRate, true);
+}
+
+AudioFileReader *
+AudioFileReaderFactory::create(FileSource source, size_t targetRate, bool threading)
+{
     QString err;
 
-    std::cerr << "AudioFileReaderFactory::createReader(\"" << source.getLocation().toStdString() << "\"): Requested rate: " << targetRate << std::endl;
+//    std::cerr << "AudioFileReaderFactory::createReader(\"" << source.getLocation().toStdString() << "\"): Requested rate: " << targetRate << std::endl;
 
     if (!source.isOK() || !source.isAvailable()) {
         std::cerr << "AudioFileReaderFactory::createReader(\"" << source.getLocation().toStdString() << "\": Source unavailable" << std::endl;
@@ -83,7 +95,9 @@
             delete reader;
             reader = new ResamplingWavFileReader
                 (source,
-                 ResamplingWavFileReader::ResampleThreaded,
+                 threading ?
+                 ResamplingWavFileReader::ResampleThreaded :
+                 ResamplingWavFileReader::ResampleAtOnce,
                  ResamplingWavFileReader::CacheInTemporaryFile,
                  targetRate);
         }
@@ -95,7 +109,9 @@
         if (OggVorbisFileReader::supports(source)) {
             reader = new OggVorbisFileReader
                 (source,
-                 OggVorbisFileReader::DecodeThreaded,
+                 threading ?
+                 OggVorbisFileReader::DecodeThreaded :
+                 OggVorbisFileReader::DecodeAtOnce,
                  OggVorbisFileReader::CacheInTemporaryFile,
                  targetRate);
         }
@@ -108,7 +124,9 @@
         if (MP3FileReader::supports(source)) {
             reader = new MP3FileReader
                 (source,
-                 MP3FileReader::DecodeThreaded,
+                 threading ?
+                 MP3FileReader::DecodeThreaded :
+                 MP3FileReader::DecodeAtOnce,
                  MP3FileReader::CacheInTemporaryFile,
                  targetRate);
         }
@@ -120,7 +138,9 @@
         if (QuickTimeFileReader::supports(source)) {
             reader = new QuickTimeFileReader
                 (source,
-                 QuickTimeFileReader::DecodeThreaded,
+                 threading ?
+                 QuickTimeFileReader::DecodeThreaded : 
+                 QuickTimeFileReader::DecodeAtOnce,
                  QuickTimeFileReader::CacheInTemporaryFile,
                  targetRate);
         }
@@ -129,7 +149,7 @@
 
     if (reader) {
         if (reader->isOK()) {
-            std::cerr << "AudioFileReaderFactory: Reader is OK" << std::endl;
+//            std::cerr << "AudioFileReaderFactory: Reader is OK" << std::endl;
             return reader;
         }
         std::cerr << "AudioFileReaderFactory: Preferred reader for "