diff options
author | Artem Dyomin <artem.dyomin@qt.io> | 2023-07-31 14:39:02 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2023-08-01 17:58:22 +0000 |
commit | c63d6e0d2854db4a1ae3e0b975d17a3bb8d4e264 (patch) | |
tree | c6dcc7534e17b3389bc3ffd55c2bcee11a020aec | |
parent | 6c753afb0897f2813b8016ba9920d3239e37c0f1 (diff) |
Handle encoding errors
We should notifiy users when we cannot start video encoder.
Change-Id: Ia8e5256de001c940830279e1c0ce230fa7b9d483
Reviewed-by: Pavel Dubsky <pavel.dubsky@qt.io>
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
(cherry picked from commit ee77de75d8129c45720fadfc37aabc07e914c50d)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | src/plugins/multimedia/ffmpeg/qffmpegencoder.cpp | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/src/plugins/multimedia/ffmpeg/qffmpegencoder.cpp b/src/plugins/multimedia/ffmpeg/qffmpegencoder.cpp index 89b4f21c8..902daa5ad 100644 --- a/src/plugins/multimedia/ffmpeg/qffmpegencoder.cpp +++ b/src/plugins/multimedia/ffmpeg/qffmpegencoder.cpp @@ -80,6 +80,8 @@ void Encoder::addVideoSource(QPlatformVideoSource * source) if (!frameFormat.isValid()) { qCWarning(qLcFFmpegEncoder) << "Cannot add source; invalid vide frame format"; + emit error(QMediaRecorder::ResourceError, + QLatin1StringView("Cannot get video source format")); return; } @@ -94,13 +96,16 @@ void Encoder::addVideoSource(QPlatformVideoSource * source) << (hwPixelFormat ? *hwPixelFormat : AV_PIX_FMT_NONE); auto veUPtr = std::make_unique<VideoEncoder>(this, settings, frameFormat, hwPixelFormat); - if (veUPtr->isValid()) { - auto ve = veUPtr.release(); - auto conn = connect(source, &QPlatformVideoSource::newVideoFrame, - ve, &VideoEncoder::addFrame, Qt::DirectConnection); - videoEncoders.append(ve); - connections.append(conn); + if (!veUPtr->isValid()) { + emit error(QMediaRecorder::FormatError, QLatin1StringView("Cannot initialize encoder")); + return; } + + auto ve = veUPtr.release(); + auto conn = connect(source, &QPlatformVideoSource::newVideoFrame, + ve, &VideoEncoder::addFrame, Qt::DirectConnection); + videoEncoders.append(ve); + connections.append(conn); } void Encoder::start() |