diff options
author | Artem Dyomin <artem.dyomin@qt.io> | 2023-03-22 14:47:39 +0100 |
---|---|---|
committer | Artem Dyomin <artem.dyomin@qt.io> | 2023-03-22 22:17:42 +0100 |
commit | cd1fdbfe2ccbb9f44749fcdeecd65f34deeb29fc (patch) | |
tree | 2773e0483a85a2aed2f8b5749cd637e73862b172 | |
parent | a757c89932cc5e09c2c22367b278e46880ec9357 (diff) |
Implement the base video source class for camera and screen capturing
QPlatformVideoSource becomes the base of QPlatformCamera and
QPlatformScreenCapture
The advantage is using the single video source interface in the encoder
instead of defferent ones.
Pick-to: 6.5
Change-Id: Ic8bab3258dbe3efe851330d9a0e0461266dc64c9
Reviewed-by: Lars Knoll <lars@knoll.priv.no>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
21 files changed, 114 insertions, 98 deletions
diff --git a/src/multimedia/CMakeLists.txt b/src/multimedia/CMakeLists.txt index d46d7832b..1bb443d11 100644 --- a/src/multimedia/CMakeLists.txt +++ b/src/multimedia/CMakeLists.txt @@ -39,6 +39,7 @@ qt_internal_add_module(Multimedia platform/qplatformaudioinput_p.h platform/qplatformaudiooutput_p.h platform/qplatformcamera.cpp platform/qplatformcamera_p.h + platform/qplatformvideosource.cpp platform/qplatformvideosource_p.h platform/qplatformscreencapture.cpp platform/qplatformscreencapture_p.h platform/qplatformimagecapture.cpp platform/qplatformimagecapture_p.h platform/qplatformmediacapture.cpp platform/qplatformmediacapture_p.h diff --git a/src/multimedia/platform/qplatformcamera.cpp b/src/multimedia/platform/qplatformcamera.cpp index 74a114ca9..77f1a327a 100644 --- a/src/multimedia/platform/qplatformcamera.cpp +++ b/src/multimedia/platform/qplatformcamera.cpp @@ -5,9 +5,7 @@ QT_BEGIN_NAMESPACE -QPlatformCamera::QPlatformCamera(QCamera *parent) - : QObject(parent), - m_camera(parent) +QPlatformCamera::QPlatformCamera(QCamera *parent) : QPlatformVideoSource(parent), m_camera(parent) { qRegisterMetaType<QVideoFrame>(); } diff --git a/src/multimedia/platform/qplatformcamera_p.h b/src/multimedia/platform/qplatformcamera_p.h index 555adeef5..c920c4424 100644 --- a/src/multimedia/platform/qplatformcamera_p.h +++ b/src/multimedia/platform/qplatformcamera_p.h @@ -15,23 +15,17 @@ // We mean it. // -#include <QtCore/qobject.h> -#include <QtMultimedia/qtmultimediaglobal.h> +#include "qplatformvideosource_p.h" #include <QtMultimedia/qcamera.h> -#include <QtMultimedia/qvideoframeformat.h> -#include <QtCore/private/qglobal_p.h> QT_BEGIN_NAMESPACE -class Q_MULTIMEDIA_EXPORT QPlatformCamera : public QObject +class Q_MULTIMEDIA_EXPORT QPlatformCamera : public QPlatformVideoSource { Q_OBJECT public: - virtual bool isActive() const = 0; - virtual void setActive(bool active) = 0; - virtual void setCamera(const QCameraDevice &camera) = 0; virtual bool setCameraFormat(const QCameraFormat &/*format*/) { return false; } QCameraFormat cameraFormat() const { return m_cameraFormat; } @@ -67,7 +61,7 @@ public: virtual void setWhiteBalanceMode(QCamera::WhiteBalanceMode /*mode*/) {} virtual void setColorTemperature(int /*temperature*/) {} - QVideoFrameFormat frameFormat() const; + QVideoFrameFormat frameFormat() const override; QCamera::Features supportedFeatures() const { return m_supportedFeatures; } @@ -118,13 +112,9 @@ public: static int colorTemperatureForWhiteBalance(QCamera::WhiteBalanceMode mode); - // Can't use FFmpeg specific struct here, use void * for now. - virtual std::optional<int> ffmpegHWPixelFormat() const { return {}; } - Q_SIGNALS: void activeChanged(bool); void error(int error, const QString &errorString); - void newVideoFrame(const QVideoFrame &); // only used by FFmpeg protected: explicit QPlatformCamera(QCamera *parent); diff --git a/src/multimedia/platform/qplatformscreencapture.cpp b/src/multimedia/platform/qplatformscreencapture.cpp index 67140f23d..de7f74d9d 100644 --- a/src/multimedia/platform/qplatformscreencapture.cpp +++ b/src/multimedia/platform/qplatformscreencapture.cpp @@ -8,7 +8,7 @@ QT_BEGIN_NAMESPACE QPlatformScreenCapture::QPlatformScreenCapture(QScreenCapture *screenCapture) - : QObject(screenCapture), m_screenCapture(screenCapture) + : QPlatformVideoSource(screenCapture), m_screenCapture(screenCapture) { qRegisterMetaType<QVideoFrame>(); } @@ -53,11 +53,6 @@ QScreenCapture *QPlatformScreenCapture::screenCapture() const return m_screenCapture; } -std::optional<int> QPlatformScreenCapture::ffmpegHWPixelFormat() const -{ - return {}; -} - void QPlatformScreenCapture::updateError(QScreenCapture::Error error, const QString &errorString) { bool changed = error != m_error || errorString != m_errorString; @@ -74,3 +69,5 @@ void QPlatformScreenCapture::updateError(QScreenCapture::Error error, const QStr } QT_END_NAMESPACE + +#include "moc_qplatformscreencapture_p.cpp" diff --git a/src/multimedia/platform/qplatformscreencapture_p.h b/src/multimedia/platform/qplatformscreencapture_p.h index 8da927d8d..b5a865e22 100644 --- a/src/multimedia/platform/qplatformscreencapture_p.h +++ b/src/multimedia/platform/qplatformscreencapture_p.h @@ -15,31 +15,20 @@ // We mean it. // -#include <QtCore/qobject.h> -#include <QtCore/qnativeinterface.h> -#include <QtCore/private/qglobal_p.h> - -#include <QtMultimedia/qtmultimediaglobal.h> - +#include "qplatformvideosource_p.h" #include "qscreencapture.h" -#include "qvideoframeformat.h" - -#include <optional> QT_BEGIN_NAMESPACE class QVideoFrame; -class Q_MULTIMEDIA_EXPORT QPlatformScreenCapture : public QObject +class Q_MULTIMEDIA_EXPORT QPlatformScreenCapture : public QPlatformVideoSource { Q_OBJECT public: explicit QPlatformScreenCapture(QScreenCapture *screenCapture); - virtual void setActive(bool active) = 0; - virtual bool isActive() const = 0; - virtual void setScreen(QScreen *s) = 0; virtual QScreen *screen() const = 0; @@ -52,18 +41,11 @@ public: virtual QScreenCapture::Error error() const; virtual QString errorString() const; - virtual QVideoFrameFormat format() const = 0; - QScreenCapture *screenCapture() const; - virtual std::optional<int> ffmpegHWPixelFormat() const; - public Q_SLOTS: void updateError(QScreenCapture::Error error, const QString &errorString); -Q_SIGNALS: - void newVideoFrame(const QVideoFrame &); - private: QScreenCapture::Error m_error = QScreenCapture::NoError; QString m_errorString; diff --git a/src/multimedia/platform/qplatformvideosource.cpp b/src/multimedia/platform/qplatformvideosource.cpp new file mode 100644 index 000000000..a23ed91ae --- /dev/null +++ b/src/multimedia/platform/qplatformvideosource.cpp @@ -0,0 +1,15 @@ +// Copyright (C) 2021 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +#include "qplatformvideosource_p.h" + +QT_BEGIN_NAMESPACE + +std::optional<int> QPlatformVideoSource::ffmpegHWPixelFormat() const +{ + return {}; +}; + +QT_END_NAMESPACE + +//#include "moc_qplatformvideosource_p.cpp diff --git a/src/multimedia/platform/qplatformvideosource_p.h b/src/multimedia/platform/qplatformvideosource_p.h new file mode 100644 index 000000000..fc99a30ef --- /dev/null +++ b/src/multimedia/platform/qplatformvideosource_p.h @@ -0,0 +1,49 @@ +// Copyright (C) 2021 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +#ifndef QPLATFORMVIDEOSOURCE_P_H +#define QPLATFORMVIDEOSOURCE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "qvideoframeformat.h" + +#include <QtCore/qobject.h> +#include <QtCore/qnativeinterface.h> +#include <QtCore/private/qglobal_p.h> + +#include <optional> + +QT_BEGIN_NAMESPACE + +class QVideoFrame; + +class Q_MULTIMEDIA_EXPORT QPlatformVideoSource : public QObject +{ + Q_OBJECT +public: + using QObject::QObject; + + virtual void setActive(bool active) = 0; + virtual bool isActive() const = 0; + + virtual QVideoFrameFormat frameFormat() const = 0; + + virtual std::optional<int> ffmpegHWPixelFormat() const; + +Q_SIGNALS: + void newVideoFrame(const QVideoFrame &); +}; + +QT_END_NAMESPACE + +#endif // QPLATFORMVIDEOSOURCE_P_H diff --git a/src/plugins/multimedia/ffmpeg/qavfscreencapture.mm b/src/plugins/multimedia/ffmpeg/qavfscreencapture.mm index 4c7aea14a..cb35a442e 100644 --- a/src/plugins/multimedia/ffmpeg/qavfscreencapture.mm +++ b/src/plugins/multimedia/ffmpeg/qavfscreencapture.mm @@ -123,7 +123,7 @@ void QAVFScreenCapture::onNewFrame(const QVideoFrame &frame) emit newVideoFrame(frame); } -QVideoFrameFormat QAVFScreenCapture::format() const +QVideoFrameFormat QAVFScreenCapture::frameFormat() const { if (!m_grabber) return {}; diff --git a/src/plugins/multimedia/ffmpeg/qavfscreencapture_p.h b/src/plugins/multimedia/ffmpeg/qavfscreencapture_p.h index 4204f1195..18e8e5572 100644 --- a/src/plugins/multimedia/ffmpeg/qavfscreencapture_p.h +++ b/src/plugins/multimedia/ffmpeg/qavfscreencapture_p.h @@ -35,7 +35,7 @@ public: explicit QAVFScreenCapture(QScreenCapture *screenCapture); ~QAVFScreenCapture() override; - QVideoFrameFormat format() const override; + QVideoFrameFormat frameFormat() const override; std::optional<int> ffmpegHWPixelFormat() const override; diff --git a/src/plugins/multimedia/ffmpeg/qffmpegencoder.cpp b/src/plugins/multimedia/ffmpeg/qffmpegencoder.cpp index 6f002babe..1e03b7930 100644 --- a/src/plugins/multimedia/ffmpeg/qffmpegencoder.cpp +++ b/src/plugins/multimedia/ffmpeg/qffmpegencoder.cpp @@ -11,6 +11,7 @@ #include <qaudiobuffer.h> #include "qffmpegaudioinput_p.h" #include <private/qplatformcamera_p.h> +#include <private/qplatformvideosource_p.h> #include "qffmpegvideobuffer_p.h" #include "qffmpegmediametadata_p.h" #include "qffmpegencoderoptions_p.h" @@ -58,50 +59,29 @@ void Encoder::addAudioInput(QFFmpegAudioInput *input) input->setRunning(true); } -void Encoder::addCamera(QPlatformCamera *camera) +void Encoder::addVideoSource(QPlatformVideoSource * source) { - auto cf = camera->cameraFormat(); + auto frameFormat = source->frameFormat(); - qCDebug(qLcFFmpegEncoder) << "adding camera:" - << "resolution=" << cf.resolution() - << "pixelFormat=" << cf.pixelFormat() - << "maxFrameRate=" << cf.maxFrameRate() << "ffmpegHWPixelFormat=" - << (camera->ffmpegHWPixelFormat() ? *camera->ffmpegHWPixelFormat() - : std::numeric_limits<int>::min()); - - std::optional<AVPixelFormat> hwPixelFormat = camera->ffmpegHWPixelFormat() - ? AVPixelFormat(*camera->ffmpegHWPixelFormat()) - : std::optional<AVPixelFormat>{}; - auto veUPtr = - std::make_unique<VideoEncoder>(this, settings, camera->frameFormat(), hwPixelFormat); - if (veUPtr->isValid()) { - auto ve = veUPtr.release(); - auto conn = connect(camera, &QPlatformCamera::newVideoFrame, - [=](const QVideoFrame &frame) { ve->addFrame(frame); }); - videoEncoders.append(ve); - connections.append(conn); + if (!frameFormat.isValid()) { + qCWarning(qLcFFmpegEncoder) << "Cannot add source; invalid vide frame format"; + return; } -} -void Encoder::addScreenCapture(QPlatformScreenCapture *screenCapture) -{ - auto scf = screenCapture->format(); + std::optional<AVPixelFormat> hwPixelFormat = source->ffmpegHWPixelFormat() + ? AVPixelFormat(*source->ffmpegHWPixelFormat()) + : std::optional<AVPixelFormat>{}; - qCDebug(qLcFFmpegEncoder) << "adding screen capture:" - << "pixelFormat=" << scf.pixelFormat() - << "frameSize=" << scf.frameSize() << "frameRate=" << scf.frameRate() - << "ffmpegHWPixelFormat=" - << (screenCapture->ffmpegHWPixelFormat() - ? *screenCapture->ffmpegHWPixelFormat() - : std::numeric_limits<int>::min()); + qCDebug(qLcFFmpegEncoder) << "adding video source" << source->metaObject()->className() << ":" + << "pixelFormat=" << frameFormat.pixelFormat() + << "frameSize=" << frameFormat.frameSize() + << "frameRate=" << frameFormat.frameRate() << "ffmpegHWPixelFormat=" + << (hwPixelFormat ? *hwPixelFormat : AV_PIX_FMT_NONE); - std::optional<AVPixelFormat> hwPixelFormat = screenCapture->ffmpegHWPixelFormat() - ? AVPixelFormat(*screenCapture->ffmpegHWPixelFormat()) - : std::optional<AVPixelFormat>{}; - auto veUPtr = std::make_unique<VideoEncoder>(this, settings, scf, hwPixelFormat); + auto veUPtr = std::make_unique<VideoEncoder>(this, settings, frameFormat, hwPixelFormat); if (veUPtr->isValid()) { auto ve = veUPtr.release(); - auto conn = connect(screenCapture, &QPlatformScreenCapture::newVideoFrame, + auto conn = connect(source, &QPlatformVideoSource::newVideoFrame, [=](const QVideoFrame &frame) { ve->addFrame(frame); }); videoEncoders.append(ve); connections.append(conn); @@ -484,7 +464,8 @@ VideoEncoder::VideoEncoder(Encoder *encoder, const QMediaEncoderSettings &settin setObjectName(QLatin1String("VideoEncoder")); AVPixelFormat swFormat = QFFmpegVideoBuffer::toAVPixelFormat(format.pixelFormat()); - AVPixelFormat ffmpegPixelFormat = hwFormat ? *hwFormat : swFormat; + AVPixelFormat ffmpegPixelFormat = + hwFormat && *hwFormat != AV_PIX_FMT_NONE ? *hwFormat : swFormat; auto frameRate = format.frameRate(); if (frameRate <= 0.) { qWarning() << "Invalid frameRate" << frameRate << "; Using the default instead"; diff --git a/src/plugins/multimedia/ffmpeg/qffmpegencoder_p.h b/src/plugins/multimedia/ffmpeg/qffmpegencoder_p.h index aa873661c..cb604095f 100644 --- a/src/plugins/multimedia/ffmpeg/qffmpegencoder_p.h +++ b/src/plugins/multimedia/ffmpeg/qffmpegencoder_p.h @@ -19,7 +19,6 @@ #include "qffmpeghwaccel_p.h" #include <private/qplatformmediarecorder_p.h> -#include <private/qplatformscreencapture_p.h> #include <qaudioformat.h> #include <qaudiobuffer.h> @@ -29,7 +28,7 @@ QT_BEGIN_NAMESPACE class QFFmpegAudioInput; class QVideoFrame; -class QPlatformCamera; +class QPlatformVideoSource; namespace QFFmpeg { @@ -59,8 +58,7 @@ public: ~Encoder(); void addAudioInput(QFFmpegAudioInput *input); - void addCamera(QPlatformCamera *source); - void addScreenCapture(QPlatformScreenCapture *screenCapture); + void addVideoSource(QPlatformVideoSource *source); void start(); void finalize(); @@ -78,7 +76,12 @@ Q_SIGNALS: void error(QMediaRecorder::Error code, const QString &description); void finalizationDone(); -public: +private: + // TODO: improve the encasulation + friend class EncodingFinalizer; + friend class AudioEncoder; + friend class VideoEncoder; + friend class Muxer; QMediaEncoderSettings settings; QMediaMetaData metaData; @@ -168,7 +171,7 @@ class VideoEncoder : public EncoderThread public: VideoEncoder(Encoder *encoder, const QMediaEncoderSettings &settings, const QVideoFrameFormat &format, std::optional<AVPixelFormat> hwFormat); - ~VideoEncoder(); + ~VideoEncoder() override; void addFrame(const QVideoFrame &frame); diff --git a/src/plugins/multimedia/ffmpeg/qffmpegmediarecorder.cpp b/src/plugins/multimedia/ffmpeg/qffmpegmediarecorder.cpp index bf61989d5..2fdc0957f 100644 --- a/src/plugins/multimedia/ffmpeg/qffmpegmediarecorder.cpp +++ b/src/plugins/multimedia/ffmpeg/qffmpegmediarecorder.cpp @@ -86,11 +86,11 @@ void QFFmpegMediaRecorder::record(QMediaEncoderSettings &settings) auto *camera = m_session->camera(); if (camera) - encoder->addCamera(camera); + encoder->addVideoSource(camera); auto *screenCapture = m_session->screenCapture(); if (screenCapture) - encoder->addScreenCapture(screenCapture); + encoder->addVideoSource(screenCapture); durationChanged(0); stateChanged(QMediaRecorder::RecordingState); diff --git a/src/plugins/multimedia/ffmpeg/qffmpegscreencapture.cpp b/src/plugins/multimedia/ffmpeg/qffmpegscreencapture.cpp index 5e770972a..8c7da017f 100644 --- a/src/plugins/multimedia/ffmpeg/qffmpegscreencapture.cpp +++ b/src/plugins/multimedia/ffmpeg/qffmpegscreencapture.cpp @@ -201,7 +201,7 @@ QFFmpegScreenCapture::QFFmpegScreenCapture(QScreenCapture *screenCapture) QFFmpegScreenCapture::~QFFmpegScreenCapture() = default; -QVideoFrameFormat QFFmpegScreenCapture::format() const +QVideoFrameFormat QFFmpegScreenCapture::frameFormat() const { if (m_grabber) return m_grabber->format(); diff --git a/src/plugins/multimedia/ffmpeg/qffmpegscreencapture_dxgi.cpp b/src/plugins/multimedia/ffmpeg/qffmpegscreencapture_dxgi.cpp index 8c76463b2..614ee4006 100644 --- a/src/plugins/multimedia/ffmpeg/qffmpegscreencapture_dxgi.cpp +++ b/src/plugins/multimedia/ffmpeg/qffmpegscreencapture_dxgi.cpp @@ -300,7 +300,7 @@ QFFmpegScreenCaptureDxgi::~QFFmpegScreenCaptureDxgi() resetGrabber(); } -QVideoFrameFormat QFFmpegScreenCaptureDxgi::format() const +QVideoFrameFormat QFFmpegScreenCaptureDxgi::frameFormat() const { if (m_active) return m_active->format(); diff --git a/src/plugins/multimedia/ffmpeg/qffmpegscreencapture_dxgi_p.h b/src/plugins/multimedia/ffmpeg/qffmpegscreencapture_dxgi_p.h index 5c93888bd..0bb5079b2 100644 --- a/src/plugins/multimedia/ffmpeg/qffmpegscreencapture_dxgi_p.h +++ b/src/plugins/multimedia/ffmpeg/qffmpegscreencapture_dxgi_p.h @@ -32,7 +32,7 @@ public: void setActive(bool active) override; bool isActive() const override { return bool(m_active); } - QVideoFrameFormat format() const override; + QVideoFrameFormat frameFormat() const override; void setScreen(QScreen *screen) override; QScreen *screen() const override { return m_screen; } diff --git a/src/plugins/multimedia/ffmpeg/qffmpegscreencapture_p.h b/src/plugins/multimedia/ffmpeg/qffmpegscreencapture_p.h index 68b6a63a5..9d31cefa9 100644 --- a/src/plugins/multimedia/ffmpeg/qffmpegscreencapture_p.h +++ b/src/plugins/multimedia/ffmpeg/qffmpegscreencapture_p.h @@ -30,7 +30,7 @@ public: explicit QFFmpegScreenCapture(QScreenCapture *screenCapture); ~QFFmpegScreenCapture() override; - QVideoFrameFormat format() const override; + QVideoFrameFormat frameFormat() const override; protected: bool setActiveInternal(bool active) override; diff --git a/src/plugins/multimedia/ffmpeg/qffmpegscreencapture_uwp.cpp b/src/plugins/multimedia/ffmpeg/qffmpegscreencapture_uwp.cpp index caf84337b..d1b7a59d5 100644 --- a/src/plugins/multimedia/ffmpeg/qffmpegscreencapture_uwp.cpp +++ b/src/plugins/multimedia/ffmpeg/qffmpegscreencapture_uwp.cpp @@ -457,7 +457,7 @@ bool QFFmpegScreenCaptureUwp::isSupported() return winrt::GraphicsCaptureSession::IsSupported(); } -QVideoFrameFormat QFFmpegScreenCaptureUwp::format() const +QVideoFrameFormat QFFmpegScreenCaptureUwp::frameFormat() const { return m_format; } diff --git a/src/plugins/multimedia/ffmpeg/qffmpegscreencapture_uwp_p.h b/src/plugins/multimedia/ffmpeg/qffmpegscreencapture_uwp_p.h index 1b2a704ab..b26153f73 100644 --- a/src/plugins/multimedia/ffmpeg/qffmpegscreencapture_uwp_p.h +++ b/src/plugins/multimedia/ffmpeg/qffmpegscreencapture_uwp_p.h @@ -29,7 +29,7 @@ public: explicit QFFmpegScreenCaptureUwp(QScreenCapture *screenCapture); ~QFFmpegScreenCaptureUwp(); - QVideoFrameFormat format() const override; + QVideoFrameFormat frameFormat() const override; static bool isSupported(); diff --git a/src/plugins/multimedia/ffmpeg/qx11screencapture.cpp b/src/plugins/multimedia/ffmpeg/qx11screencapture.cpp index 675553a35..3fc56dd67 100644 --- a/src/plugins/multimedia/ffmpeg/qx11screencapture.cpp +++ b/src/plugins/multimedia/ffmpeg/qx11screencapture.cpp @@ -320,7 +320,7 @@ QX11ScreenCapture::QX11ScreenCapture(QScreenCapture *screenCapture) QX11ScreenCapture::~QX11ScreenCapture() = default; -QVideoFrameFormat QX11ScreenCapture::format() const +QVideoFrameFormat QX11ScreenCapture::frameFormat() const { return m_grabber ? m_grabber->format() : QVideoFrameFormat{}; } diff --git a/src/plugins/multimedia/ffmpeg/qx11screencapture_p.h b/src/plugins/multimedia/ffmpeg/qx11screencapture_p.h index 0930dde87..b286966f8 100644 --- a/src/plugins/multimedia/ffmpeg/qx11screencapture_p.h +++ b/src/plugins/multimedia/ffmpeg/qx11screencapture_p.h @@ -27,7 +27,7 @@ public: explicit QX11ScreenCapture(QScreenCapture *screenCapture); ~QX11ScreenCapture() override; - QVideoFrameFormat format() const override; + QVideoFrameFormat frameFormat() const override; static bool isSupported(); diff --git a/tests/auto/unit/mockbackend/qmockscreencapture.h b/tests/auto/unit/mockbackend/qmockscreencapture.h index 8f3642289..732111e7a 100644 --- a/tests/auto/unit/mockbackend/qmockscreencapture.h +++ b/tests/auto/unit/mockbackend/qmockscreencapture.h @@ -60,7 +60,7 @@ public: bool isActive() const override { return bool(m_grabber); } - QVideoFrameFormat format() const override + QVideoFrameFormat frameFormat() const override { return m_grabber ? QVideoFrameFormat( m_imageSize, QVideoFrameFormat::pixelFormatFromImageFormat(m_imageFormat)) |