diff options
author | Doris Verria <doris.verria@qt.io> | 2021-08-02 15:15:58 +0200 |
---|---|---|
committer | Doris Verria <doris.verria@qt.io> | 2021-08-03 09:15:09 +0200 |
commit | 8111f1a069e8b73602dd6b70b4390cd91fb69846 (patch) | |
tree | ba8a0f327e9e760ef8de1a39974701f7e7063519 | |
parent | b3c0ecd839c63690e4f76fc895ed7082245caf41 (diff) | |
download | qtmultimedia-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.mm | 4 | ||||
-rw-r--r-- | src/multimedia/platform/darwin/audio/qcoreaudioutils.mm | 3 |
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); |