diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/integration/qaudiodecoderbackend/tst_qaudiodecoderbackend.cpp | 57 |
1 files changed, 32 insertions, 25 deletions
diff --git a/tests/auto/integration/qaudiodecoderbackend/tst_qaudiodecoderbackend.cpp b/tests/auto/integration/qaudiodecoderbackend/tst_qaudiodecoderbackend.cpp index 5fb3a81a6..267deafbc 100644 --- a/tests/auto/integration/qaudiodecoderbackend/tst_qaudiodecoderbackend.cpp +++ b/tests/auto/integration/qaudiodecoderbackend/tst_qaudiodecoderbackend.cpp @@ -14,6 +14,18 @@ constexpr char TEST_CORRUPTED_FILE_NAME[] = "testdata/test-corrupted.wav"; constexpr char TEST_INVALID_SOURCE[] = "invalid"; constexpr char TEST_NO_AUDIO_TRACK[] = "testdata/test-no-audio-track.mp4"; +constexpr int testFileSampleCount = 44094; +constexpr int testFileSampleRate = 44100; + +constexpr std::chrono::microseconds testFileDuration = [] { + using namespace std::chrono; + using namespace std::chrono_literals; + auto duration = nanoseconds(1s) * testFileSampleCount / testFileSampleRate; + return round<microseconds>(duration); +}(); + +constexpr qint64 testFileDurationUs = qint64(testFileDuration.count()); + QT_USE_NAMESPACE /* @@ -152,7 +164,7 @@ void tst_QAudioDecoderBackend::directBruteForceReading() checkNoMoreChanges(decoder); - QCOMPARE(sampleCount, 44094); + QCOMPARE(sampleCount, testFileSampleCount); } void tst_QAudioDecoderBackend::indirectReadingByBufferReadySignal() @@ -190,7 +202,7 @@ void tst_QAudioDecoderBackend::indirectReadingByBufferReadySignal() checkNoMoreChanges(decoder); - QCOMPARE(sampleCount, 44094); + QCOMPARE(sampleCount, testFileSampleCount); QCOMPARE(finishSpy.size(), 1); } @@ -232,7 +244,7 @@ void tst_QAudioDecoderBackend::indirectReadingByBufferAvailableSignal() { checkNoMoreChanges(decoder); - QCOMPARE(sampleCount, 44094); + QCOMPARE(sampleCount, testFileSampleCount); QCOMPARE(finishSpy.size(), 1); } @@ -300,7 +312,7 @@ void tst_QAudioDecoderBackend::restartOnBufferReady() checkNoMoreChanges(decoder); - QCOMPARE(sampleCount, 44094); + QCOMPARE(sampleCount, testFileSampleCount); } void tst_QAudioDecoderBackend::restartOnFinish() @@ -341,7 +353,7 @@ void tst_QAudioDecoderBackend::restartOnFinish() QVERIFY(!decoder.isDecoding()); checkNoMoreChanges(decoder); - QCOMPARE(sampleCount, 44094); + QCOMPARE(sampleCount, testFileSampleCount); } void tst_QAudioDecoderBackend::fileTest() @@ -395,7 +407,7 @@ void tst_QAudioDecoderBackend::fileTest() // Test file is 44.1K 16bit mono, 44094 samples QCOMPARE(buffer.format().channelCount(), 1); - QCOMPARE(buffer.format().sampleRate(), 44100); + QCOMPARE(buffer.format().sampleRate(), testFileSampleRate); QCOMPARE(buffer.format().sampleFormat(), QAudioFormat::Int16); QCOMPARE(buffer.byteCount(), buffer.sampleCount() * 2); // 16bit mono @@ -408,7 +420,7 @@ void tst_QAudioDecoderBackend::fileTest() byteCount += buffer.byteCount(); // Now drain the decoder - if (sampleCount < 44094) { + if (sampleCount < testFileSampleCount) { QTRY_COMPARE(d.bufferAvailable(), true); } @@ -422,14 +434,14 @@ void tst_QAudioDecoderBackend::fileTest() sampleCount += buffer.sampleCount(); byteCount += buffer.byteCount(); - if (sampleCount < 44094) { + if (sampleCount < testFileSampleCount) { QTRY_COMPARE(d.bufferAvailable(), true); } } // Make sure the duration is roughly correct (+/- 20ms) - QCOMPARE(sampleCount, 44094); - QCOMPARE(byteCount, 44094 * 2); + QCOMPARE(sampleCount, testFileSampleCount); + QCOMPARE(byteCount, testFileSampleCount * 2); QVERIFY(qAbs(qint64(duration) - 1000000) < 20000); QVERIFY(qAbs((d.position() + (buffer.duration() / 1000)) - 1000) < 20); QTRY_COMPARE(finishedSpy.size(), 1); @@ -495,12 +507,12 @@ void tst_QAudioDecoderBackend::fileTest() sampleCount += buffer.sampleCount(); byteCount += buffer.byteCount(); - // Now drain the decoder - if (duration < 996000) { - QTRY_COMPARE(d.bufferAvailable(), true); - } + while (finishedSpy.isEmpty() || d.bufferAvailable()) { + if (!d.bufferAvailable()) { + QTest::qWait(std::chrono::milliseconds(10)); + continue; + } - while (d.bufferAvailable()) { buffer = d.read(); QVERIFY(buffer.isValid()); QTRY_VERIFY(!positionSpy.isEmpty()); @@ -510,19 +522,14 @@ void tst_QAudioDecoderBackend::fileTest() duration += buffer.duration(); sampleCount += buffer.sampleCount(); byteCount += buffer.byteCount(); - - if (duration < 996000) { - QTRY_COMPARE(d.bufferAvailable(), true); - } } // Resampling might end up with fewer or more samples // so be a bit sloppy QCOMPARE_LT(qAbs(sampleCount - 22047), 100); QCOMPARE_LT(qAbs(byteCount - 22047), 100); - QCOMPARE_LT(qAbs(qint64(duration) - 1000000), 20000); + QCOMPARE_LT(qAbs(qint64(duration) - testFileDurationUs), 20000); QCOMPARE_LT(qAbs((d.position() + (buffer.duration() / 1000)) - 1000), 20); - QTRY_COMPARE(finishedSpy.size(), 1); QVERIFY(!d.bufferAvailable()); QVERIFY(!d.isDecoding()); @@ -829,7 +836,7 @@ void tst_QAudioDecoderBackend::deviceTest() // Test file is 44.1K 16bit mono QCOMPARE(buffer.format().channelCount(), 1); - QCOMPARE(buffer.format().sampleRate(), 44100); + QCOMPARE(buffer.format().sampleRate(), testFileSampleRate); QCOMPARE(buffer.format().sampleFormat(), QAudioFormat::Int16); QVERIFY(errorSpy.isEmpty()); @@ -838,7 +845,7 @@ void tst_QAudioDecoderBackend::deviceTest() sampleCount += buffer.sampleCount(); // Now drain the decoder - if (sampleCount < 44094) { + if (sampleCount < testFileSampleCount) { QTRY_COMPARE(d.bufferAvailable(), true); } @@ -851,13 +858,13 @@ void tst_QAudioDecoderBackend::deviceTest() duration += buffer.duration(); sampleCount += buffer.sampleCount(); - if (sampleCount < 44094) { + if (sampleCount < testFileSampleCount) { QTRY_COMPARE(d.bufferAvailable(), true); } } // Make sure the duration is roughly correct (+/- 20ms) - QCOMPARE(sampleCount, 44094); + QCOMPARE(sampleCount, testFileSampleCount); QVERIFY(qAbs(qint64(duration) - 1000000) < 20000); QVERIFY(qAbs((d.position() + (buffer.duration() / 1000)) - 1000) < 20); QTRY_COMPARE(finishedSpy.size(), 1); |