Mercurial > hg > svcore
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 \"" |