diff options
author | Lev Zelenskiy <lev.zelenskiy@nokia.com> | 2012-02-24 12:50:32 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-02-24 06:00:41 +0100 |
commit | b56d3e70df4a5bf25a1be97213b5dc36bc5e6dbd (patch) | |
tree | e35fd301a0e7198609679c95e2374d4b4aa28e85 /tests/auto/integration/qaudiodecoderbackend | |
parent | 0b8c6115cdb1ed7174b558daa00a19841a2d5a78 (diff) |
Changes to GStreamer backend for audio decoder.
Removed WaitingState.
New signals: finished(), positionChanged(), durationChanged().
New methods: position(), duration().
A parameter removed from read() method.
Unit tests updated.
Change-Id: Ie9d8a2804285c5542e592cce69963adbdf6ebfb8
Reviewed-by: Jonas Rabbe <jonas.rabbe@nokia.com>
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
Diffstat (limited to 'tests/auto/integration/qaudiodecoderbackend')
-rw-r--r-- | tests/auto/integration/qaudiodecoderbackend/tst_qaudiodecoderbackend.cpp | 73 |
1 files changed, 56 insertions, 17 deletions
diff --git a/tests/auto/integration/qaudiodecoderbackend/tst_qaudiodecoderbackend.cpp b/tests/auto/integration/qaudiodecoderbackend/tst_qaudiodecoderbackend.cpp index f71062af4..e4370198d 100644 --- a/tests/auto/integration/qaudiodecoderbackend/tst_qaudiodecoderbackend.cpp +++ b/tests/auto/integration/qaudiodecoderbackend/tst_qaudiodecoderbackend.cpp @@ -82,7 +82,6 @@ void tst_QAudioDecoderBackend::cleanup() void tst_QAudioDecoderBackend::fileTest() { QAudioDecoder d; - bool ok; QAudioBuffer buffer; quint64 duration = 0; int byteCount = 0; @@ -104,6 +103,9 @@ void tst_QAudioDecoderBackend::fileTest() QSignalSpy bufferChangedSpy(&d, SIGNAL(bufferAvailableChanged(bool))); QSignalSpy errorSpy(&d, SIGNAL(error(QAudioDecoder::Error))); QSignalSpy stateSpy(&d, SIGNAL(stateChanged(QAudioDecoder::State))); + QSignalSpy durationSpy(&d, SIGNAL(durationChanged(qint64))); + QSignalSpy finishedSpy(&d, SIGNAL(finished())); + QSignalSpy positionSpy(&d, SIGNAL(positionChanged(qint64))); d.start(); QTRY_VERIFY(d.state() == QAudioDecoder::DecodingState); @@ -111,9 +113,10 @@ void tst_QAudioDecoderBackend::fileTest() QTRY_VERIFY(!readySpy.isEmpty()); QTRY_VERIFY(!bufferChangedSpy.isEmpty()); QVERIFY(d.bufferAvailable()); + QTRY_VERIFY(!durationSpy.isEmpty()); + QVERIFY(qAbs(d.duration() - 1000) < 20); - buffer = d.read(&ok); - QVERIFY(ok); + buffer = d.read(); QVERIFY(buffer.isValid()); // Test file is 44.1K 16bit mono, 44094 samples @@ -139,9 +142,11 @@ void tst_QAudioDecoderBackend::fileTest() } while (d.bufferAvailable()) { - buffer = d.read(&ok); - QVERIFY(ok); + buffer = d.read(); QVERIFY(buffer.isValid()); + QTRY_VERIFY(!positionSpy.isEmpty()); + QVERIFY(positionSpy.takeLast().at(0).toLongLong() == qint64(duration / 1000)); + duration += buffer.duration(); sampleCount += buffer.sampleCount(); byteCount += buffer.byteCount(); @@ -155,13 +160,22 @@ void tst_QAudioDecoderBackend::fileTest() QCOMPARE(sampleCount, 44094); QCOMPARE(byteCount, 44094 * 2); QVERIFY(qAbs(qint64(duration) - 1000000) < 20000); + QVERIFY(qAbs((d.position() + (buffer.duration() / 1000)) - 1000) < 20); + QTRY_COMPARE(finishedSpy.count(), 1); + QVERIFY(!d.bufferAvailable()); + QTRY_COMPARE(d.state(), QAudioDecoder::StoppedState); d.stop(); QTRY_COMPARE(d.state(), QAudioDecoder::StoppedState); + QTRY_COMPARE(durationSpy.count(), 2); + QCOMPARE(d.duration(), qint64(-1)); QVERIFY(!d.bufferAvailable()); readySpy.clear(); bufferChangedSpy.clear(); stateSpy.clear(); + durationSpy.clear(); + finishedSpy.clear(); + positionSpy.clear(); // change output audio format QAudioFormat format; @@ -189,9 +203,10 @@ void tst_QAudioDecoderBackend::fileTest() QTRY_VERIFY(!readySpy.isEmpty()); QTRY_VERIFY(!bufferChangedSpy.isEmpty()); QVERIFY(d.bufferAvailable()); + QTRY_VERIFY(!durationSpy.isEmpty()); + QVERIFY(qAbs(d.duration() - 1000) < 20); - buffer = d.read(&ok); - QVERIFY(ok); + buffer = d.read(); QVERIFY(buffer.isValid()); // See if we got the right format QVERIFY(buffer.format() == format); @@ -211,9 +226,11 @@ void tst_QAudioDecoderBackend::fileTest() } while (d.bufferAvailable()) { - buffer = d.read(&ok); - QVERIFY(ok); + buffer = d.read(); QVERIFY(buffer.isValid()); + QTRY_VERIFY(!positionSpy.isEmpty()); + QVERIFY(positionSpy.takeLast().at(0).toLongLong() == qint64(duration / 1000)); + duration += buffer.duration(); sampleCount += buffer.sampleCount(); byteCount += buffer.byteCount(); @@ -228,16 +245,21 @@ void tst_QAudioDecoderBackend::fileTest() QVERIFY(qAbs(sampleCount - 22047) < 100); QVERIFY(qAbs(byteCount - 22047) < 100); QVERIFY(qAbs(qint64(duration) - 1000000) < 20000); + QVERIFY(qAbs((d.position() + (buffer.duration() / 1000)) - 1000) < 20); + QTRY_COMPARE(finishedSpy.count(), 1); + QVERIFY(!d.bufferAvailable()); + QTRY_COMPARE(d.state(), QAudioDecoder::StoppedState); d.stop(); QTRY_COMPARE(d.state(), QAudioDecoder::StoppedState); + QTRY_COMPARE(durationSpy.count(), 2); + QCOMPARE(d.duration(), qint64(-1)); QVERIFY(!d.bufferAvailable()); } void tst_QAudioDecoderBackend::deviceTest() { QAudioDecoder d; - bool ok; QAudioBuffer buffer; quint64 duration = 0; int sampleCount = 0; @@ -246,6 +268,9 @@ void tst_QAudioDecoderBackend::deviceTest() QSignalSpy bufferChangedSpy(&d, SIGNAL(bufferAvailableChanged(bool))); QSignalSpy errorSpy(&d, SIGNAL(error(QAudioDecoder::Error))); QSignalSpy stateSpy(&d, SIGNAL(stateChanged(QAudioDecoder::State))); + QSignalSpy durationSpy(&d, SIGNAL(durationChanged(qint64))); + QSignalSpy finishedSpy(&d, SIGNAL(finished())); + QSignalSpy positionSpy(&d, SIGNAL(positionChanged(qint64))); QVERIFY(d.state() == QAudioDecoder::StoppedState); QVERIFY(d.bufferAvailable() == false); @@ -269,9 +294,10 @@ void tst_QAudioDecoderBackend::deviceTest() QTRY_VERIFY(!readySpy.isEmpty()); QTRY_VERIFY(!bufferChangedSpy.isEmpty()); QVERIFY(d.bufferAvailable()); + QTRY_VERIFY(!durationSpy.isEmpty()); + QVERIFY(qAbs(d.duration() - 1000) < 20); - buffer = d.read(&ok); - QVERIFY(ok); + buffer = d.read(); QVERIFY(buffer.isValid()); // Test file is 44.1K 16bit mono @@ -292,9 +318,11 @@ void tst_QAudioDecoderBackend::deviceTest() } while (d.bufferAvailable()) { - buffer = d.read(&ok); - QVERIFY(ok); + buffer = d.read(); QVERIFY(buffer.isValid()); + QTRY_VERIFY(!positionSpy.isEmpty()); + QVERIFY(positionSpy.takeLast().at(0).toLongLong() == qint64(duration / 1000)); + duration += buffer.duration(); sampleCount += buffer.sampleCount(); if (sampleCount < 44094) { @@ -305,13 +333,22 @@ void tst_QAudioDecoderBackend::deviceTest() // Make sure the duration is roughly correct (+/- 20ms) QCOMPARE(sampleCount, 44094); QVERIFY(qAbs(qint64(duration) - 1000000) < 20000); + QVERIFY(qAbs((d.position() + (buffer.duration() / 1000)) - 1000) < 20); + QTRY_COMPARE(finishedSpy.count(), 1); + QVERIFY(!d.bufferAvailable()); + QTRY_COMPARE(d.state(), QAudioDecoder::StoppedState); d.stop(); QTRY_COMPARE(d.state(), QAudioDecoder::StoppedState); QVERIFY(!d.bufferAvailable()); + QTRY_COMPARE(durationSpy.count(), 2); + QCOMPARE(d.duration(), qint64(-1)); readySpy.clear(); bufferChangedSpy.clear(); stateSpy.clear(); + durationSpy.clear(); + finishedSpy.clear(); + positionSpy.clear(); // Now try changing formats QAudioFormat format; @@ -332,9 +369,10 @@ void tst_QAudioDecoderBackend::deviceTest() QTRY_VERIFY(!readySpy.isEmpty()); QTRY_VERIFY(!bufferChangedSpy.isEmpty()); QVERIFY(d.bufferAvailable()); + QTRY_VERIFY(!durationSpy.isEmpty()); + QVERIFY(qAbs(d.duration() - 1000) < 20); - buffer = d.read(&ok); - QVERIFY(ok); + buffer = d.read(); QVERIFY(buffer.isValid()); // See if we got the right format QVERIFY(buffer.format() == format); @@ -347,7 +385,8 @@ void tst_QAudioDecoderBackend::deviceTest() d.stop(); QTRY_COMPARE(d.state(), QAudioDecoder::StoppedState); QVERIFY(!d.bufferAvailable()); - + QTRY_COMPARE(durationSpy.count(), 2); + QCOMPARE(d.duration(), qint64(-1)); } QTEST_MAIN(tst_QAudioDecoderBackend) |