summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArtem Dyomin <artem.dyomin@qt.io>2023-02-03 14:58:44 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2023-02-03 15:17:10 +0000
commit8242b3d15510f6376bb1c9e0b412cfb8bcfae445 (patch)
treeeb9759bf1eb5b324610533ae8367ba6e2f59095b
parent48365df8784626dbe9d16220eac15419007471ef (diff)
downloadqtmultimedia-8242b3d15510f6376bb1c9e0b412cfb8bcfae445.tar.gz
Fix encoder UB if no audio inputs
The case is reproduced if QAudioInput is set to QMediaCaptureSession but the platform doesn't have audio inputs. The case is to be unit tested after implementation of comprehensive mock of MediaDevices Change-Id: I372c8c1260cb3fa0d70ea48a31c315bd9580cb06 Reviewed-by: Lars Knoll <lars@knoll.priv.no> (cherry picked from commit c56de3e60cd3c86524b1767277a69d6e02e1350d) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--src/plugins/multimedia/ffmpeg/qffmpegmediarecorder.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/plugins/multimedia/ffmpeg/qffmpegmediarecorder.cpp b/src/plugins/multimedia/ffmpeg/qffmpegmediarecorder.cpp
index 7d660214a..811d13f20 100644
--- a/src/plugins/multimedia/ffmpeg/qffmpegmediarecorder.cpp
+++ b/src/plugins/multimedia/ffmpeg/qffmpegmediarecorder.cpp
@@ -75,8 +75,12 @@ void QFFmpegMediaRecorder::record(QMediaEncoderSettings &settings)
connect(encoder, &QFFmpeg::Encoder::error, this, &QFFmpegMediaRecorder::handleSessionError);
auto *audioInput = m_session->audioInput();
- if (audioInput)
- encoder->addAudioInput(static_cast<QFFmpegAudioInput *>(audioInput));
+ if (audioInput) {
+ if (audioInput->device.isNull())
+ qWarning() << "Audio input device is null; cannot encode audio";
+ else
+ encoder->addAudioInput(static_cast<QFFmpegAudioInput *>(audioInput));
+ }
auto *camera = m_session->camera();
if (camera)