comparison 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
comparison
equal deleted inserted replaced
326:bb6e4c46e202 327:1d656dcda8ef
54 } 54 }
55 55
56 AudioFileReader * 56 AudioFileReader *
57 AudioFileReaderFactory::createReader(FileSource source, size_t targetRate) 57 AudioFileReaderFactory::createReader(FileSource source, size_t targetRate)
58 { 58 {
59 return create(source, targetRate, false);
60 }
61
62 AudioFileReader *
63 AudioFileReaderFactory::createThreadingReader(FileSource source, size_t targetRate)
64 {
65 return create(source, targetRate, true);
66 }
67
68 AudioFileReader *
69 AudioFileReaderFactory::create(FileSource source, size_t targetRate, bool threading)
70 {
59 QString err; 71 QString err;
60 72
61 std::cerr << "AudioFileReaderFactory::createReader(\"" << source.getLocation().toStdString() << "\"): Requested rate: " << targetRate << std::endl; 73 // std::cerr << "AudioFileReaderFactory::createReader(\"" << source.getLocation().toStdString() << "\"): Requested rate: " << targetRate << std::endl;
62 74
63 if (!source.isOK() || !source.isAvailable()) { 75 if (!source.isOK() || !source.isAvailable()) {
64 std::cerr << "AudioFileReaderFactory::createReader(\"" << source.getLocation().toStdString() << "\": Source unavailable" << std::endl; 76 std::cerr << "AudioFileReaderFactory::createReader(\"" << source.getLocation().toStdString() << "\": Source unavailable" << std::endl;
65 return 0; 77 return 0;
66 } 78 }
81 std::cerr << "AudioFileReaderFactory::createReader: WAV file rate: " << reader->getSampleRate() << ", creating resampling reader" << std::endl; 93 std::cerr << "AudioFileReaderFactory::createReader: WAV file rate: " << reader->getSampleRate() << ", creating resampling reader" << std::endl;
82 94
83 delete reader; 95 delete reader;
84 reader = new ResamplingWavFileReader 96 reader = new ResamplingWavFileReader
85 (source, 97 (source,
86 ResamplingWavFileReader::ResampleThreaded, 98 threading ?
99 ResamplingWavFileReader::ResampleThreaded :
100 ResamplingWavFileReader::ResampleAtOnce,
87 ResamplingWavFileReader::CacheInTemporaryFile, 101 ResamplingWavFileReader::CacheInTemporaryFile,
88 targetRate); 102 targetRate);
89 } 103 }
90 } 104 }
91 105
93 #ifdef HAVE_FISHSOUND 107 #ifdef HAVE_FISHSOUND
94 if (!reader) { 108 if (!reader) {
95 if (OggVorbisFileReader::supports(source)) { 109 if (OggVorbisFileReader::supports(source)) {
96 reader = new OggVorbisFileReader 110 reader = new OggVorbisFileReader
97 (source, 111 (source,
98 OggVorbisFileReader::DecodeThreaded, 112 threading ?
113 OggVorbisFileReader::DecodeThreaded :
114 OggVorbisFileReader::DecodeAtOnce,
99 OggVorbisFileReader::CacheInTemporaryFile, 115 OggVorbisFileReader::CacheInTemporaryFile,
100 targetRate); 116 targetRate);
101 } 117 }
102 } 118 }
103 #endif 119 #endif
106 #ifdef HAVE_MAD 122 #ifdef HAVE_MAD
107 if (!reader) { 123 if (!reader) {
108 if (MP3FileReader::supports(source)) { 124 if (MP3FileReader::supports(source)) {
109 reader = new MP3FileReader 125 reader = new MP3FileReader
110 (source, 126 (source,
111 MP3FileReader::DecodeThreaded, 127 threading ?
128 MP3FileReader::DecodeThreaded :
129 MP3FileReader::DecodeAtOnce,
112 MP3FileReader::CacheInTemporaryFile, 130 MP3FileReader::CacheInTemporaryFile,
113 targetRate); 131 targetRate);
114 } 132 }
115 } 133 }
116 #endif 134 #endif
118 #ifdef HAVE_QUICKTIME 136 #ifdef HAVE_QUICKTIME
119 if (!reader) { 137 if (!reader) {
120 if (QuickTimeFileReader::supports(source)) { 138 if (QuickTimeFileReader::supports(source)) {
121 reader = new QuickTimeFileReader 139 reader = new QuickTimeFileReader
122 (source, 140 (source,
123 QuickTimeFileReader::DecodeThreaded, 141 threading ?
142 QuickTimeFileReader::DecodeThreaded :
143 QuickTimeFileReader::DecodeAtOnce,
124 QuickTimeFileReader::CacheInTemporaryFile, 144 QuickTimeFileReader::CacheInTemporaryFile,
125 targetRate); 145 targetRate);
126 } 146 }
127 } 147 }
128 #endif 148 #endif
129 149
130 if (reader) { 150 if (reader) {
131 if (reader->isOK()) { 151 if (reader->isOK()) {
132 std::cerr << "AudioFileReaderFactory: Reader is OK" << std::endl; 152 // std::cerr << "AudioFileReaderFactory: Reader is OK" << std::endl;
133 return reader; 153 return reader;
134 } 154 }
135 std::cerr << "AudioFileReaderFactory: Preferred reader for " 155 std::cerr << "AudioFileReaderFactory: Preferred reader for "
136 << "url \"" << source.getLocation().toStdString() 156 << "url \"" << source.getLocation().toStdString()
137 << "\" (content type \"" 157 << "\" (content type \""