summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/multimedia/platform/windows/audio/qwindowsaudioinput.cpp12
-rw-r--r--tests/auto/integration/qaudioinput/tst_qaudioinput.cpp8
2 files changed, 11 insertions, 9 deletions
diff --git a/src/multimedia/platform/windows/audio/qwindowsaudioinput.cpp b/src/multimedia/platform/windows/audio/qwindowsaudioinput.cpp
index 74cbd782f..87f8571ce 100644
--- a/src/multimedia/platform/windows/audio/qwindowsaudioinput.cpp
+++ b/src/multimedia/platform/windows/audio/qwindowsaudioinput.cpp
@@ -436,7 +436,9 @@ void QWindowsAudioInput::closeMixer()
qsizetype QWindowsAudioInput::bytesReady() const
{
- if(period_size == 0 || buffer_size == 0)
+ if (period_size == 0 || buffer_size == 0)
+ return 0;
+ if (deviceState == QAudio::StoppedState || deviceState == QAudio::SuspendedState)
return 0;
int buf = ((buffer_size/period_size)-waveFreeBlockCount)*period_size;
@@ -566,7 +568,7 @@ qint64 QWindowsAudioInput::read(char* data, qint64 len)
void QWindowsAudioInput::resume()
{
- if(deviceState == QAudio::SuspendedState) {
+ if (deviceState == QAudio::SuspendedState) {
deviceState = QAudio::ActiveState;
for(int i=0; i<buffer_size/period_size; i++) {
result = waveInAddBuffer(hWaveIn, &waveBlocks[i], sizeof(WAVEHDR));
@@ -615,8 +617,8 @@ qint64 QWindowsAudioInput::processedUSecs() const
void QWindowsAudioInput::suspend()
{
if(deviceState == QAudio::ActiveState) {
- waveInReset(hWaveIn);
deviceState = QAudio::SuspendedState;
+ waveInReset(hWaveIn);
emit stateChanged(deviceState);
}
}
@@ -627,7 +629,7 @@ void QWindowsAudioInput::feedback()
QTime now(QTime::currentTime());
qDebug()<<now.second()<<"s "<<now.msec()<<"ms :feedback() INPUT "<<this;
#endif
- if(!(deviceState==QAudio::StoppedState||deviceState==QAudio::SuspendedState))
+ if(deviceState != QAudio::StoppedState && deviceState != QAudio::SuspendedState)
QMetaObject::invokeMethod(this, "deviceReady", Qt::QueuedConnection);
}
@@ -636,7 +638,7 @@ bool QWindowsAudioInput::deviceReady()
bytesAvailable = bytesReady();
#ifdef DEBUG_AUDIO
QTime now(QTime::currentTime());
- qDebug()<<now.second()<<"s "<<now.msec()<<"ms :deviceReady() INPUT";
+ qDebug()<<now.second()<<"s "<<now.msec()<<"ms :deviceReady() INPUT" << bytesReady();
#endif
if(deviceState != QAudio::ActiveState && deviceState != QAudio::IdleState)
return true;
diff --git a/tests/auto/integration/qaudioinput/tst_qaudioinput.cpp b/tests/auto/integration/qaudioinput/tst_qaudioinput.cpp
index 3b8dc6fd4..ca65c36c3 100644
--- a/tests/auto/integration/qaudioinput/tst_qaudioinput.cpp
+++ b/tests/auto/integration/qaudioinput/tst_qaudioinput.cpp
@@ -111,7 +111,7 @@ void tst_QAudioInput::generate_audiofile_testrows()
QTest::addColumn<QAudioFormat>("audioFormat");
for (int i=0; i<audioFiles.count(); i++) {
- QTest::newRow(QString("Audio File %1").arg(i).toUtf8().constData())
+ QTest::newRow(QString("%1").arg(i).toUtf8().constData())
<< audioFiles.at(i) << testFormats.at(i);
// Only run first format in CI system to reduce test times
@@ -607,7 +607,7 @@ void tst_QAudioInput::pushSuspendResume()
qint64 totalBytesRead = 0;
bool firstBuffer = true;
- qint64 len = audioFormat.sampleRate() * audioFormat.bytesPerFrame() / 10; // 100 msecond
+ qint64 len = audioFormat.sampleRate() * audioFormat.bytesPerFrame() / 2; // .5 seconds
while (totalBytesRead < len) {
QTRY_VERIFY_WITH_TIMEOUT(audioInput.bytesAvailable() > 0, 1000);
auto buffer = feed->readAll();
@@ -657,7 +657,7 @@ void tst_QAudioInput::pushSuspendResume()
totalBytesRead = 0;
firstBuffer = true;
while (totalBytesRead < len && audioInput.state() != QAudio::StoppedState) {
- QTRY_VERIFY_WITH_TIMEOUT(audioInput.bytesAvailable() > 0, 1000);
+ QTRY_VERIFY(audioInput.bytesAvailable() > 0);
auto buffer = feed->readAll();
audioFile->write(buffer);
totalBytesRead += buffer.size();
@@ -671,7 +671,7 @@ void tst_QAudioInput::pushSuspendResume()
QString("didn't emit StoppedState signal after stop(), got %1 signals instead").arg(stateSignal.count()).toUtf8().constData());
QVERIFY2((audioInput.state() == QAudio::StoppedState), "didn't transitions to StoppedState after stop()");
- QVERIFY2(qTolerantCompare(processedUs, 240000LL),
+ QVERIFY2(qTolerantCompare(processedUs, 1000000LL),
QString("processedUSecs() doesn't fall in acceptable range, should be 2040000 (%1)").arg(processedUs).toUtf8().constData());
QVERIFY2((audioInput.elapsedUSecs() == (qint64)0), "elapsedUSecs() not equal to zero in StoppedState");