summaryrefslogtreecommitdiffstats
path: root/src/plugins/audiocapture
diff options
context:
space:
mode:
authorVaL Doroshchuk <valentyn.doroshchuk@qt.io>2017-12-15 14:23:06 +0100
committerVaL Doroshchuk <valentyn.doroshchuk@qt.io>2018-03-21 13:15:25 +0000
commit2831fb0e5035f248988fce12e76ff55495212497 (patch)
tree5e8e5ada8c75dceec160484c0358365df2900c87 /src/plugins/audiocapture
parentd49abfda2f5bbf15de3a5133c77d5115a75b3c2b (diff)
Audiocapture: Fix setting QAudioEncoderSettings::bitRate
The sample size is now correctly calculated using provided bit rate via QAudioEncoderSettings. The bit rate is calculated like bitrate = sample size * sample rate * channel count Fixed bug when sample size is 8 when bit rate and sample rate is 8000 which is not correct. The bit rate must be 8 * 8000. Task-number: QTBUG-65207 Change-Id: I660fadfaaf6cc63004480fb84165252360b7f75e Reviewed-by: Christian Stromme <christian.stromme@qt.io>
Diffstat (limited to 'src/plugins/audiocapture')
-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;
}