summaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorArtem Dyomin <artem.dyomin@qt.io>2023-02-03 14:58:44 +0100
committerArtem Dyomin <artem.dyomin@qt.io>2023-02-03 15:39:05 +0100
commitc56de3e60cd3c86524b1767277a69d6e02e1350d (patch)
tree716bf91d159cd1a068d0fc7ec605f5d7c0ab84a5 /src/plugins
parentdc714637d95c775b1b35f1b4e12ccef140dc60a1 (diff)
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 Pick-to: 6.5 6.4 Change-Id: I372c8c1260cb3fa0d70ea48a31c315bd9580cb06 Reviewed-by: Lars Knoll <lars@knoll.priv.no>
Diffstat (limited to 'src/plugins')
-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 2fe1aeb6d..bf61989d5 100644
--- a/src/plugins/multimedia/ffmpeg/qffmpegmediarecorder.cpp
+++ b/src/plugins/multimedia/ffmpeg/qffmpegmediarecorder.cpp
@@ -77,8 +77,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)