diff options
author | Artem Dyomin <artem.dyomin@qt.io> | 2023-02-03 14:58:44 +0100 |
---|---|---|
committer | Artem Dyomin <artem.dyomin@qt.io> | 2023-02-03 15:39:05 +0100 |
commit | c56de3e60cd3c86524b1767277a69d6e02e1350d (patch) | |
tree | 716bf91d159cd1a068d0fc7ec605f5d7c0ab84a5 /src/plugins | |
parent | dc714637d95c775b1b35f1b4e12ccef140dc60a1 (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.cpp | 8 |
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) |