summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2021-05-23 16:38:53 +0200
committerLars Knoll <lars.knoll@qt.io>2021-05-25 11:35:11 +0000
commitef2d075b357464d3d6ae1c963b1a419bd3121241 (patch)
tree23996bc79ae8aa992e64c3a3da4d1f6043e53eab /src
parent11bbbe191cb7cee6ae32f624fb943859c6b5d350 (diff)
Fix some logic errors in QWindowsAudioDeviceInfo
With these changes, the qaudiodeviceinfo auto test passes on Windows. Change-Id: Ic139d0213a5ec797dfabd3bfde6b4d00decd0cc1 Reviewed-by: Doris Verria <doris.verria@qt.io> Reviewed-by: André de la Rocha <andre.rocha@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/multimedia/platform/windows/audio/qwindowsaudiodeviceinfo.cpp23
1 files changed, 15 insertions, 8 deletions
diff --git a/src/multimedia/platform/windows/audio/qwindowsaudiodeviceinfo.cpp b/src/multimedia/platform/windows/audio/qwindowsaudiodeviceinfo.cpp
index fc00452cd..626da87a2 100644
--- a/src/multimedia/platform/windows/audio/qwindowsaudiodeviceinfo.cpp
+++ b/src/multimedia/platform/windows/audio/qwindowsaudiodeviceinfo.cpp
@@ -107,7 +107,7 @@ QWindowsAudioDeviceInfo::QWindowsAudioDeviceInfo(QByteArray dev, int waveID, con
supportedSampleFormats.append(QAudioFormat::Int16);
}
- minimumSampleRate = INT_MAX;
+ minimumSampleRate = std::numeric_limits<int>::max();
maximumSampleRate = 0;
// Check sample rate
if ((fmt & WAVE_FORMAT_1M08)
@@ -115,37 +115,41 @@ QWindowsAudioDeviceInfo::QWindowsAudioDeviceInfo(QByteArray dev, int waveID, con
|| (fmt & WAVE_FORMAT_1M16)
|| (fmt & WAVE_FORMAT_1S16)) {
minimumSampleRate = qMin(minimumSampleRate, 11025);
- maximumSampleRate = qMin(maximumSampleRate, 11025);
+ maximumSampleRate = qMax(maximumSampleRate, 11025);
}
if ((fmt & WAVE_FORMAT_2M08)
|| (fmt & WAVE_FORMAT_2S08)
|| (fmt & WAVE_FORMAT_2M16)
|| (fmt & WAVE_FORMAT_2S16)) {
minimumSampleRate = qMin(minimumSampleRate, 22050);
- maximumSampleRate = qMin(maximumSampleRate, 22050);
+ maximumSampleRate = qMax(maximumSampleRate, 22050);
}
if ((fmt & WAVE_FORMAT_4M08)
|| (fmt & WAVE_FORMAT_4S08)
|| (fmt & WAVE_FORMAT_4M16)
|| (fmt & WAVE_FORMAT_4S16)) {
minimumSampleRate = qMin(minimumSampleRate, 44100);
- maximumSampleRate = qMin(maximumSampleRate, 44100);
+ maximumSampleRate = qMax(maximumSampleRate, 44100);
}
if ((fmt & WAVE_FORMAT_48M08)
|| (fmt & WAVE_FORMAT_48S08)
|| (fmt & WAVE_FORMAT_48M16)
|| (fmt & WAVE_FORMAT_48S16)) {
minimumSampleRate = qMin(minimumSampleRate, 48000);
- maximumSampleRate = qMin(maximumSampleRate, 48000);
+ maximumSampleRate = qMax(maximumSampleRate, 48000);
}
if ((fmt & WAVE_FORMAT_96M08)
|| (fmt & WAVE_FORMAT_96S08)
|| (fmt & WAVE_FORMAT_96M16)
|| (fmt & WAVE_FORMAT_96S16)) {
minimumSampleRate = qMin(minimumSampleRate, 96000);
- maximumSampleRate = qMin(maximumSampleRate, 96000);
+ maximumSampleRate = qMax(maximumSampleRate, 96000);
}
+ if (minimumSampleRate == std::numeric_limits<int>::max())
+ minimumSampleRate = 0;
+ minimumChannelCount = std::numeric_limits<int>::max();
+ maximumChannelCount = 0;
// Check channel count
if (fmt & WAVE_FORMAT_1M08
|| fmt & WAVE_FORMAT_1M16
@@ -170,10 +174,13 @@ QWindowsAudioDeviceInfo::QWindowsAudioDeviceInfo(QByteArray dev, int waveID, con
|| fmt & WAVE_FORMAT_48S16
|| fmt & WAVE_FORMAT_96S08
|| fmt & WAVE_FORMAT_96S16) {
- minimumChannelCount = qMin(minimumChannelCount, 96000);
- maximumChannelCount = qMin(maximumChannelCount, 96000);
+ minimumChannelCount = qMin(minimumChannelCount, 2);
+ maximumChannelCount = qMax(maximumChannelCount, 2);
}
+ if (minimumChannelCount == std::numeric_limits<int>::max())
+ minimumChannelCount = 0;
+
// WAVEOUTCAPS and WAVEINCAPS contains information only for the previously tested parameters.
// WaveOut and WaveInt might actually support more formats, the only way to know is to try
// opening the device with it.