Mercurial > hg > svcore
comparison data/fileio/test/AudioFileReaderTest.h @ 1429:48e9f538e6e9
Untabify
author | Chris Cannam |
---|---|
date | Thu, 01 Mar 2018 18:02:22 +0000 |
parents | 87ae75da6527 |
children | d2555df635ec |
comparison
equal
deleted
inserted
replaced
1428:87ae75da6527 | 1429:48e9f538e6e9 |
---|---|
252 AudioFileReaderFactory::Normalisation::None); | 252 AudioFileReaderFactory::Normalisation::None); |
253 params.gaplessMode = (gapless ? | 253 params.gaplessMode = (gapless ? |
254 AudioFileReaderFactory::GaplessMode::Gapless : | 254 AudioFileReaderFactory::GaplessMode::Gapless : |
255 AudioFileReaderFactory::GaplessMode::Gappy); | 255 AudioFileReaderFactory::GaplessMode::Gappy); |
256 | 256 |
257 AudioFileReader *reader = | 257 AudioFileReader *reader = |
258 AudioFileReaderFactory::createReader | 258 AudioFileReaderFactory::createReader |
259 (audioDir + "/" + format + "/" + audiofile, params); | 259 (audioDir + "/" + format + "/" + audiofile, params); |
260 | 260 |
261 if (!reader) { | 261 if (!reader) { |
262 #if ( QT_VERSION >= 0x050000 ) | 262 #if ( QT_VERSION >= 0x050000 ) |
263 QSKIP("Unsupported file, skipping"); | 263 QSKIP("Unsupported file, skipping"); |
264 #else | 264 #else |
265 QSKIP("Unsupported file, skipping", SkipSingle); | 265 QSKIP("Unsupported file, skipping", SkipSingle); |
266 #endif | 266 #endif |
267 } | 267 } |
268 | 268 |
269 QString extension; | 269 QString extension; |
270 sv_samplerate_t fileRate; | 270 sv_samplerate_t fileRate; |
271 int channels; | 271 int channels; |
272 int fileBitdepth; | 272 int fileBitdepth; |
274 | 274 |
275 QCOMPARE((int)reader->getChannelCount(), channels); | 275 QCOMPARE((int)reader->getChannelCount(), channels); |
276 QCOMPARE(reader->getNativeRate(), fileRate); | 276 QCOMPARE(reader->getNativeRate(), fileRate); |
277 QCOMPARE(reader->getSampleRate(), readRate); | 277 QCOMPARE(reader->getSampleRate(), readRate); |
278 | 278 |
279 AudioTestData tdata(readRate, channels); | 279 AudioTestData tdata(readRate, channels); |
280 | 280 |
281 float *reference = tdata.getInterleavedData(); | 281 float *reference = tdata.getInterleavedData(); |
282 sv_frame_t refFrames = tdata.getFrameCount(); | 282 sv_frame_t refFrames = tdata.getFrameCount(); |
283 | 283 |
284 // The reader should give us exactly the expected number of | 284 // The reader should give us exactly the expected number of |
285 // frames, except for mp3/aac files. We ask for quite a lot | 285 // frames, except for mp3/aac files. We ask for quite a lot |
286 // more, though, so we can (a) check that we only get the | 286 // more, though, so we can (a) check that we only get the |
287 // expected number back (if this is not mp3/aac) or (b) take | 287 // expected number back (if this is not mp3/aac) or (b) take |
288 // into account silence at beginning and end (if it is). | 288 // into account silence at beginning and end (if it is). |
289 floatvec_t test = reader->getInterleavedFrames(0, refFrames + 5000); | 289 floatvec_t test = reader->getInterleavedFrames(0, refFrames + 5000); |
290 | 290 |
291 delete reader; | 291 delete reader; |
292 reader = 0; | 292 reader = 0; |
293 | 293 |
294 sv_frame_t read = test.size() / channels; | 294 sv_frame_t read = test.size() / channels; |
295 | 295 |
296 bool perceptual = (extension == "mp3" || | 296 bool perceptual = (extension == "mp3" || |
297 extension == "aac" || | 297 extension == "aac" || |
298 extension == "m4a"); | 298 extension == "m4a"); |
299 | 299 |
459 double meanDiff = totalDiff / double(refFrames); | 459 double meanDiff = totalDiff / double(refFrames); |
460 double rmsDiff = sqrt(totalSqrDiff / double(refFrames)); | 460 double rmsDiff = sqrt(totalSqrDiff / double(refFrames)); |
461 | 461 |
462 /* | 462 /* |
463 cerr << "channel " << c << ": mean diff " << meanDiff << endl; | 463 cerr << "channel " << c << ": mean diff " << meanDiff << endl; |
464 cerr << "channel " << c << ": rms diff " << rmsDiff << endl; | 464 cerr << "channel " << c << ": rms diff " << rmsDiff << endl; |
465 cerr << "channel " << c << ": max diff " << maxDiff << " at " << maxIndex << endl; | 465 cerr << "channel " << c << ": max diff " << maxDiff << " at " << maxIndex << endl; |
466 */ | 466 */ |
467 if (rmsDiff >= rmsLimit) { | 467 if (rmsDiff >= rmsLimit) { |
468 SVCERR << "ERROR: for audiofile " << audiofile << ": RMS diff = " << rmsDiff << " for channel " << c << " (limit = " << rmsLimit << ")" << endl; | 468 SVCERR << "ERROR: for audiofile " << audiofile << ": RMS diff = " << rmsDiff << " for channel " << c << " (limit = " << rmsLimit << ")" << endl; |
469 QVERIFY(rmsDiff < rmsLimit); | 469 QVERIFY(rmsDiff < rmsLimit); |
470 } | 470 } |
482 if (mag > quiet) { | 482 if (mag > quiet) { |
483 SVCERR << "ERROR: audiofile " << audiofile << " contains spurious data after end of reference (found sample " << test[ix * channels + c] << " at index " << ix << " of channel " << c << " after reference+offset ended at " << refFrames+offset << ")" << endl; | 483 SVCERR << "ERROR: audiofile " << audiofile << " contains spurious data after end of reference (found sample " << test[ix * channels + c] << " at index " << ix << " of channel " << c << " after reference+offset ended at " << refFrames+offset << ")" << endl; |
484 QVERIFY(mag < quiet); | 484 QVERIFY(mag < quiet); |
485 } | 485 } |
486 } | 486 } |
487 } | 487 } |
488 } | 488 } |
489 }; | 489 }; |
490 | 490 |
491 #endif | 491 #endif |