summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDoris Verria <doris.verria@qt.io>2021-08-02 15:15:58 +0200
committerDoris Verria <doris.verria@qt.io>2021-08-03 09:15:09 +0200
commit8111f1a069e8b73602dd6b70b4390cd91fb69846 (patch)
treeba8a0f327e9e760ef8de1a39974701f7e7063519
parentb3c0ecd839c63690e4f76fc895ed7082245caf41 (diff)
downloadqtmultimedia-8111f1a069e8b73602dd6b70b4390cd91fb69846.tar.gz
Set default Int16 format for audio decoding on darwin
AVFAudioDecoder uses the audio track's AudioStreamBasicDescription to specify the format for the decoded audio. However, the bitsPerChannel field is irrelevant for compressed formats and is always 0, so we can't use it to determine the decoded audio's sample format from it. Set a default sample format (Int16) in this case. Fixes: QTBUG-95360 Change-Id: Ibdf597e177838bd339749fbdc126334707e4ebd9 Reviewed-by: André de la Rocha <andre.rocha@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
-rw-r--r--src/multimedia/platform/darwin/audio/avfaudiodecoder.mm4
-rw-r--r--src/multimedia/platform/darwin/audio/qcoreaudioutils.mm3
2 files changed, 4 insertions, 3 deletions
diff --git a/src/multimedia/platform/darwin/audio/avfaudiodecoder.mm b/src/multimedia/platform/darwin/audio/avfaudiodecoder.mm
index ecea99f74..eb91223c8 100644
--- a/src/multimedia/platform/darwin/audio/avfaudiodecoder.mm
+++ b/src/multimedia/platform/darwin/audio/avfaudiodecoder.mm
@@ -215,6 +215,10 @@ QAudioFormat qt_format_for_audio_track(AVAssetTrack *track)
const AudioStreamBasicDescription* const asbd =
CMAudioFormatDescriptionGetStreamBasicDescription(desc);
format = CoreAudioUtils::toQAudioFormat(*asbd);
+ // AudioStreamBasicDescription's mBitsPerChannel is 0 for compressed formats
+ // In this case set default Int16 sample format
+ if (asbd->mBitsPerChannel == 0)
+ format.setSampleFormat(QAudioFormat::Int16);
return format;
}
diff --git a/src/multimedia/platform/darwin/audio/qcoreaudioutils.mm b/src/multimedia/platform/darwin/audio/qcoreaudioutils.mm
index dc3f27218..8faa353c7 100644
--- a/src/multimedia/platform/darwin/audio/qcoreaudioutils.mm
+++ b/src/multimedia/platform/darwin/audio/qcoreaudioutils.mm
@@ -96,9 +96,6 @@ QAudioFormat CoreAudioUtils::toQAudioFormat(AudioStreamBasicDescription const& s
break;
}
- if (format == QAudioFormat::Unknown)
- return audioFormat;
-
audioFormat.setSampleFormat(format);
audioFormat.setSampleRate(sf.mSampleRate);
audioFormat.setChannelCount(sf.mChannelsPerFrame);