summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArtem Dyomin <artem.dyomin@qt.io>2023-07-31 14:39:02 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2023-08-01 17:58:22 +0000
commitc63d6e0d2854db4a1ae3e0b975d17a3bb8d4e264 (patch)
treec6dcc7534e17b3389bc3ffd55c2bcee11a020aec
parent6c753afb0897f2813b8016ba9920d3239e37c0f1 (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.cpp17
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()