summaryrefslogtreecommitdiffstats
path: root/src/plugins/audiocapture/audioencodercontrol.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/audiocapture/audioencodercontrol.cpp')
-rw-r--r--src/plugins/audiocapture/audioencodercontrol.cpp13
1 files changed, 6 insertions, 7 deletions
diff --git a/src/plugins/audiocapture/audioencodercontrol.cpp b/src/plugins/audiocapture/audioencodercontrol.cpp
index d8a83bf26..6fc519cef 100644
--- a/src/plugins/audiocapture/audioencodercontrol.cpp
+++ b/src/plugins/audiocapture/audioencodercontrol.cpp
@@ -54,13 +54,12 @@ static QAudioFormat audioSettingsToAudioFormat(const QAudioEncoderSettings &sett
fmt.setCodec(settings.codec());
fmt.setChannelCount(settings.channelCount());
fmt.setSampleRate(settings.sampleRate());
- if (settings.sampleRate() == 8000 && settings.bitRate() == 8000) {
- fmt.setSampleType(QAudioFormat::UnSignedInt);
- fmt.setSampleSize(8);
- } else {
- fmt.setSampleSize(16);
- fmt.setSampleType(QAudioFormat::SignedInt);
- }
+ int sampleSize = 16;
+ if (settings.bitRate() && settings.channelCount() && settings.sampleRate())
+ sampleSize = settings.bitRate() / settings.channelCount() / settings.sampleRate();
+ fmt.setSampleSize(sampleSize);
+ fmt.setSampleType(sampleSize == 8 ? QAudioFormat::UnSignedInt : QAudioFormat::SignedInt);
+
fmt.setByteOrder(QAudioDeviceInfo::defaultInputDevice().preferredFormat().byteOrder());
return fmt;
}