summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPiotr Srebrny <piotr.srebrny@qt.io>2022-09-09 15:55:48 +0200
committerPiotr Srebrny <piotr.srebrny@qt.io>2022-09-26 14:35:28 +0200
commitf1aa625049a08519d52ba87958e25cb80e47fd1e (patch)
tree32ec669d0c9f93e481173b37e3dc78c3ce1c4da8
parent953468d895413c738e7c8784c271f394e6c53a8d (diff)
Enable error reporting when failed to initialize backend element
This patch adds an option to report error message when a backend component cannot be instantiated. This error message is then displayed in the console with qWarning and in some cases reported to the app user with error signals. We need further improvements on the error reporting side. Additionally, this patch cleans up the code in the .cpp API classes. Pick-to: 6.4 Change-Id: Id39865cc8f1e9b52804bf5b9d9b15e738508f860 Reviewed-by: Lars Knoll <lars@knoll.priv.no>
-rw-r--r--src/multimedia/audio/qaudiodecoder.cpp58
-rw-r--r--src/multimedia/audio/qaudiodecoder.h2
-rw-r--r--src/multimedia/audio/qaudioinput.cpp14
-rw-r--r--src/multimedia/audio/qaudiooutput.cpp14
-rw-r--r--src/multimedia/camera/qcamera.cpp45
-rw-r--r--src/multimedia/camera/qimagecapture.cpp51
-rw-r--r--src/multimedia/platform/qplatformmediaintegration.cpp4
-rw-r--r--src/multimedia/platform/qplatformmediaintegration_p.h21
-rw-r--r--src/multimedia/playback/qmediaplayer.cpp114
-rw-r--r--src/multimedia/playback/qmediaplayer_p.h3
-rw-r--r--src/multimedia/recording/qmediacapturesession.cpp51
-rw-r--r--src/multimedia/recording/qmediarecorder.cpp14
-rw-r--r--src/multimedia/recording/qmediarecorder_p.h1
-rw-r--r--src/multimedia/video/qvideosink.cpp20
-rw-r--r--src/plugins/multimedia/android/qandroidintegration.cpp18
-rw-r--r--src/plugins/multimedia/android/qandroidintegration_p.h18
-rw-r--r--src/plugins/multimedia/darwin/qdarwinintegration.mm14
-rw-r--r--src/plugins/multimedia/darwin/qdarwinintegration_p.h16
-rw-r--r--src/plugins/multimedia/ffmpeg/qffmpegmediaintegration.cpp16
-rw-r--r--src/plugins/multimedia/ffmpeg/qffmpegmediaintegration_p.h16
-rw-r--r--src/plugins/multimedia/gstreamer/qgstreamerintegration.cpp18
-rw-r--r--src/plugins/multimedia/gstreamer/qgstreamerintegration_p.h18
-rw-r--r--src/plugins/multimedia/qnx/qqnxmediaintegration.cpp12
-rw-r--r--src/plugins/multimedia/qnx/qqnxmediaintegration_p.h12
-rw-r--r--src/plugins/multimedia/windows/qwindowsintegration.cpp14
-rw-r--r--src/plugins/multimedia/windows/qwindowsintegration_p.h14
-rw-r--r--tests/auto/unit/mockbackend/qmockintegration.cpp16
-rw-r--r--tests/auto/unit/mockbackend/qmockintegration_p.h18
28 files changed, 303 insertions, 329 deletions
diff --git a/src/multimedia/audio/qaudiodecoder.cpp b/src/multimedia/audio/qaudiodecoder.cpp
index c35f7b64f..015ecb2de 100644
--- a/src/multimedia/audio/qaudiodecoder.cpp
+++ b/src/multimedia/audio/qaudiodecoder.cpp
@@ -41,7 +41,12 @@ QT_BEGIN_NAMESPACE
QAudioDecoder::QAudioDecoder(QObject *parent)
: QObject(parent)
{
- decoder = QPlatformMediaIntegration::instance()->createAudioDecoder(this);
+ auto maybeDecoder = QPlatformMediaIntegration::instance()->createAudioDecoder(this);
+ if (maybeDecoder) {
+ decoder = maybeDecoder.value();
+ } else {
+ qWarning() << "Failed to initialize QAudioDecoder" << maybeDecoder.error();
+ }
}
@@ -55,7 +60,7 @@ QAudioDecoder::~QAudioDecoder() = default;
*/
bool QAudioDecoder::isSupported() const
{
- return decoder != nullptr;
+ return bool(decoder);
}
/*!
@@ -73,9 +78,7 @@ bool QAudioDecoder::isDecoding() const
*/
QAudioDecoder::Error QAudioDecoder::error() const
{
- if (!decoder)
- return NotSupportedError;
- return decoder->error();
+ return decoder ? decoder->error() : NotSupportedError;
}
/*!
@@ -103,12 +106,11 @@ QString QAudioDecoder::errorString() const
*/
void QAudioDecoder::start()
{
- if (decoder == nullptr)
+ if (!decoder)
return;
// Reset error conditions
decoder->clearError();
-
decoder->start();
}
@@ -117,10 +119,8 @@ void QAudioDecoder::start()
*/
void QAudioDecoder::stop()
{
- if (!decoder)
- return;
-
- decoder->stop();
+ if (decoder)
+ decoder->stop();
}
/*!
@@ -130,9 +130,7 @@ void QAudioDecoder::stop()
*/
QUrl QAudioDecoder::source() const
{
- if (decoder)
- return decoder->source();
- return QString();
+ return decoder ? decoder->source() : QString{};
}
/*!
@@ -159,9 +157,7 @@ void QAudioDecoder::setSource(const QUrl &fileName)
*/
QIODevice *QAudioDecoder::sourceDevice() const
{
- if (decoder)
- return decoder->sourceDevice();
- return nullptr;
+ return decoder ? decoder->sourceDevice() : nullptr;
}
/*!
@@ -175,9 +171,8 @@ QIODevice *QAudioDecoder::sourceDevice() const
*/
void QAudioDecoder::setSourceDevice(QIODevice *device)
{
- if (!decoder)
- return;
- decoder->setSourceDevice(device);
+ if (decoder)
+ decoder->setSourceDevice(device);
}
/*!
@@ -190,9 +185,7 @@ void QAudioDecoder::setSourceDevice(QIODevice *device)
*/
QAudioFormat QAudioDecoder::audioFormat() const
{
- if (decoder)
- return decoder->audioFormat();
- return QAudioFormat();
+ return decoder ? decoder->audioFormat() : QAudioFormat{};
}
/*!
@@ -219,7 +212,7 @@ void QAudioDecoder::setAudioFormat(const QAudioFormat &format)
if (isDecoding())
return;
- if (decoder != nullptr)
+ if (decoder)
decoder->setAudioFormat(format);
}
@@ -230,9 +223,7 @@ void QAudioDecoder::setAudioFormat(const QAudioFormat &format)
*/
bool QAudioDecoder::bufferAvailable() const
{
- if (decoder)
- return decoder->bufferAvailable();
- return false;
+ return decoder && decoder->bufferAvailable();
}
/*!
@@ -242,9 +233,7 @@ bool QAudioDecoder::bufferAvailable() const
qint64 QAudioDecoder::position() const
{
- if (decoder)
- return decoder->position();
- return -1;
+ return decoder ? decoder->position() : -1;
}
/*!
@@ -254,9 +243,7 @@ qint64 QAudioDecoder::position() const
qint64 QAudioDecoder::duration() const
{
- if (decoder)
- return decoder->duration();
- return -1;
+ return decoder ? decoder->duration() : -1;
}
/*!
@@ -271,10 +258,7 @@ qint64 QAudioDecoder::duration() const
QAudioBuffer QAudioDecoder::read() const
{
- if (decoder)
- return decoder->read();
-
- return QAudioBuffer();
+ return decoder ? decoder->read() : QAudioBuffer{};
}
// Enums
diff --git a/src/multimedia/audio/qaudiodecoder.h b/src/multimedia/audio/qaudiodecoder.h
index 8594736a4..4a7d6f00a 100644
--- a/src/multimedia/audio/qaudiodecoder.h
+++ b/src/multimedia/audio/qaudiodecoder.h
@@ -76,7 +76,7 @@ Q_SIGNALS:
private:
Q_DISABLE_COPY(QAudioDecoder)
- QPlatformAudioDecoder *decoder;
+ QPlatformAudioDecoder *decoder = nullptr;
};
QT_END_NAMESPACE
diff --git a/src/multimedia/audio/qaudioinput.cpp b/src/multimedia/audio/qaudioinput.cpp
index 8d151d404..f8c088e97 100644
--- a/src/multimedia/audio/qaudioinput.cpp
+++ b/src/multimedia/audio/qaudioinput.cpp
@@ -56,11 +56,17 @@ QAudioInput::QAudioInput(QObject *parent)
{}
QAudioInput::QAudioInput(const QAudioDevice &device, QObject *parent)
- : QObject(parent),
- d(QPlatformMediaIntegration::instance()->createAudioInput(this))
+ : QObject(parent)
{
- d->device = device.mode() == QAudioDevice::Input ? device : QMediaDevices::defaultAudioInput();
- d->setAudioDevice(d->device);
+ auto maybeAudioInput = QPlatformMediaIntegration::instance()->createAudioInput(this);
+ if (maybeAudioInput) {
+ d = maybeAudioInput.value();
+ d->device = device.mode() == QAudioDevice::Input ? device : QMediaDevices::defaultAudioInput();
+ d->setAudioDevice(d->device);
+ } else {
+ d = new QPlatformAudioInput(nullptr);
+ qWarning() << "Failed to initialize QAudioInput" << maybeAudioInput.error();
+ }
}
QAudioInput::~QAudioInput()
diff --git a/src/multimedia/audio/qaudiooutput.cpp b/src/multimedia/audio/qaudiooutput.cpp
index dd7b31a87..60cf0d476 100644
--- a/src/multimedia/audio/qaudiooutput.cpp
+++ b/src/multimedia/audio/qaudiooutput.cpp
@@ -55,11 +55,17 @@ QAudioOutput::QAudioOutput(QObject *parent)
{}
QAudioOutput::QAudioOutput(const QAudioDevice &device, QObject *parent)
- : QObject(parent),
- d(QPlatformMediaIntegration::instance()->createAudioOutput(this))
+ : QObject(parent)
{
- d->device = device.mode() == QAudioDevice::Output ? device : QMediaDevices::defaultAudioOutput();
- d->setAudioDevice(d->device);
+ auto maybeAudioOutput = QPlatformMediaIntegration::instance()->createAudioOutput(this);
+ if (maybeAudioOutput) {
+ d = maybeAudioOutput.value();
+ d->device = device.mode() == QAudioDevice::Output ? device : QMediaDevices::defaultAudioOutput();
+ d->setAudioDevice(d->device);
+ } else {
+ d = new QPlatformAudioOutput(nullptr);
+ qWarning() << "Failed to initialize QAudioOutput" << maybeAudioOutput.error();
+ }
}
QAudioOutput::~QAudioOutput()
diff --git a/src/multimedia/camera/qcamera.cpp b/src/multimedia/camera/qcamera.cpp
index 0a0052f7c..370a10dad 100644
--- a/src/multimedia/camera/qcamera.cpp
+++ b/src/multimedia/camera/qcamera.cpp
@@ -168,12 +168,14 @@ void QCameraPrivate::init(const QCameraDevice &device)
{
Q_Q(QCamera);
- control = QPlatformMediaIntegration::instance()->createCamera(q);
- if (!control) {
- _q_error(QCamera::CameraError, QString::fromUtf8("Camera not supported"));
+ auto maybeControl = QPlatformMediaIntegration::instance()->createCamera(q);
+ if (!maybeControl) {
+ qWarning() << "Failed to initialize QCamera" << maybeControl.error();
+ error = QCamera::CameraError;
+ errorString = maybeControl.error();
return;
}
-
+ control = maybeControl.value();
cameraDevice = !device.isNull() ? device : QMediaDevices::defaultVideoInput();
if (cameraDevice.isNull())
_q_error(QCamera::CameraError, QString::fromUtf8("No camera detected"));
@@ -243,7 +245,6 @@ QCamera::~QCamera()
Q_D(QCamera);
if (d->captureSession)
d->captureSession->setCamera(nullptr);
- Q_ASSERT(!d->captureSession);
}
/*!
@@ -614,9 +615,8 @@ QPointF QCamera::customFocusPoint() const
void QCamera::setCustomFocusPoint(const QPointF &point)
{
Q_D(QCamera);
- if (!d->control)
- return;
- d->control->setCustomFocusPoint(point);
+ if (d->control)
+ d->control->setCustomFocusPoint(point);
}
/*!
@@ -672,7 +672,7 @@ float QCamera::focusDistance() const
float QCamera::maximumZoomFactor() const
{
Q_D(const QCamera);
- return d->control ? d->control->maxZoomFactor() : 1.;
+ return d->control ? d->control->maxZoomFactor() : 1.f;
}
/*!
@@ -692,7 +692,7 @@ float QCamera::maximumZoomFactor() const
float QCamera::minimumZoomFactor() const
{
Q_D(const QCamera);
- return d->control ? d->control->minZoomFactor() : 1.;
+ return d->control ? d->control->minZoomFactor() : 1.f;
}
/*!
@@ -712,14 +712,14 @@ float QCamera::minimumZoomFactor() const
float QCamera::zoomFactor() const
{
Q_D(const QCamera);
- return d->control ? d->control->zoomFactor() : 1.;
+ return d->control ? d->control->zoomFactor() : 1.f;
}
/*!
Zooms to a zoom factor \a factor at a rate of 1 factor per second.
*/
void QCamera::setZoomFactor(float factor)
{
- zoomTo(factor, 0.);
+ zoomTo(factor, 0.f);
}
/*!
@@ -745,9 +745,9 @@ void QCamera::setZoomFactor(float factor)
*/
void QCamera::zoomTo(float factor, float rate)
{
- Q_ASSERT(rate >= 0.);
- if (rate < 0.)
- rate = 0.;
+ Q_ASSERT(rate >= 0.f);
+ if (rate < 0.f)
+ rate = 0.f;
Q_D(QCamera);
if (!d->control)
@@ -916,10 +916,7 @@ void QCamera::setExposureMode(QCamera::ExposureMode mode)
bool QCamera::isExposureModeSupported(QCamera::ExposureMode mode) const
{
Q_D(const QCamera);
- if (!d->control)
- return false;
-
- return d->control->isExposureModeSupported(mode);
+ return d->control && d->control->isExposureModeSupported(mode);
}
/*!
@@ -941,7 +938,7 @@ bool QCamera::isExposureModeSupported(QCamera::ExposureMode mode) const
float QCamera::exposureCompensation() const
{
Q_D(const QCamera);
- return d->control ? d->control->exposureCompensation() : 0.;
+ return d->control ? d->control->exposureCompensation() : 0.f;
}
void QCamera::setExposureCompensation(float ev)
@@ -1039,7 +1036,7 @@ int QCamera::maximumIsoSensitivity() const
float QCamera::minimumExposureTime() const
{
Q_D(const QCamera);
- return d->control ? d->control->minExposureTime() : -1.;
+ return d->control ? d->control->minExposureTime() : -1.f;
}
/*!
@@ -1048,7 +1045,7 @@ float QCamera::minimumExposureTime() const
float QCamera::maximumExposureTime() const
{
Q_D(const QCamera);
- return d->control ? d->control->maxExposureTime() : -1.;
+ return d->control ? d->control->maxExposureTime() : -1.f;
}
/*!
@@ -1234,9 +1231,7 @@ void QCamera::setWhiteBalanceMode(QCamera::WhiteBalanceMode mode)
bool QCamera::isWhiteBalanceModeSupported(QCamera::WhiteBalanceMode mode) const
{
Q_D(const QCamera);
- if (!d->control)
- return false;
- return d->control->isWhiteBalanceModeSupported(mode);
+ return d->control && d->control->isWhiteBalanceModeSupported(mode);
}
/*!
diff --git a/src/multimedia/camera/qimagecapture.cpp b/src/multimedia/camera/qimagecapture.cpp
index e44558674..30672393b 100644
--- a/src/multimedia/camera/qimagecapture.cpp
+++ b/src/multimedia/camera/qimagecapture.cpp
@@ -82,8 +82,16 @@ QImageCapture::QImageCapture(QObject *parent)
{
Q_D(QImageCapture);
d->q_ptr = this;
- d->control = QPlatformMediaIntegration::instance()->createImageCapture(this);
+ auto maybeControl = QPlatformMediaIntegration::instance()->createImageCapture(this);
+ if (!maybeControl) {
+ qWarning() << "Failed to initialize QImageCapture" << maybeControl.error();
+ d->errorString = maybeControl.error();
+ d->error = NotReadyError;
+ return;
+ }
+
+ d->control = maybeControl.value();
connect(d->control, SIGNAL(imageExposed(int)),
this, SIGNAL(imageExposed(int)));
connect(d->control, SIGNAL(imageCaptured(int,QImage)),
@@ -125,7 +133,7 @@ QImageCapture::~QImageCapture()
*/
bool QImageCapture::isAvailable() const
{
- return d_func()->captureSession && d_func()->captureSession->camera();
+ return d_func()->control && d_func()->captureSession && d_func()->captureSession->camera();
}
/*!
@@ -183,7 +191,8 @@ void QImageCapture::setMetaData(const QMediaMetaData &metaData)
{
Q_D(QImageCapture);
d->metaData = metaData;
- d->control->setMetaData(d->metaData);
+ if (d->control)
+ d->control->setMetaData(d->metaData);
emit metaDataChanged();
}
@@ -249,14 +258,13 @@ bool QImageCapture::isReadyForCapture() const
int QImageCapture::captureToFile(const QString &file)
{
Q_D(QImageCapture);
-
- d->unsetError();
-
if (!d->control) {
- d->_q_error(-1, NotSupportedFeatureError, QPlatformImageCapture::msgCameraNotReady());
+ d->_q_error(-1, d->error, d->errorString);
return -1;
}
+ d->unsetError();
+
if (!isReadyForCapture()) {
d->_q_error(-1, NotReadyError, tr("Could not capture in stopped state"));
return -1;
@@ -280,18 +288,13 @@ int QImageCapture::captureToFile(const QString &file)
int QImageCapture::capture()
{
Q_D(QImageCapture);
-
- d->unsetError();
-
- if (d->control)
+ if (!d->control) {
+ d->_q_error(-1, d->error, d->errorString);
+ return -1;
+ } else {
+ d->unsetError();
return d->control->captureToBuffer();
-
- d->error = NotSupportedFeatureError;
- d->errorString = tr("Device does not support images capture.");
-
- d->_q_error(-1, d->error, d->errorString);
-
- return -1;
+ }
}
/*!
@@ -346,9 +349,7 @@ int QImageCapture::capture()
QImageCapture::FileFormat QImageCapture::fileFormat() const
{
Q_D(const QImageCapture);
- if (!d->control)
- return UnspecifiedFormat;
- return d->control->imageSettings().format();
+ return d->control ? d->control->imageSettings().format() : UnspecifiedFormat;
}
/*!
@@ -425,9 +426,7 @@ QString QImageCapture::fileFormatDescription(QImageCapture::FileFormat f)
QSize QImageCapture::resolution() const
{
Q_D(const QImageCapture);
- if (!d->control)
- return QSize();
- return d->control->imageSettings().resolution();
+ return d->control ? d->control->imageSettings().resolution() : QSize{};
}
/*!
@@ -478,9 +477,7 @@ void QImageCapture::setResolution(int width, int height)
QImageCapture::Quality QImageCapture::quality() const
{
Q_D(const QImageCapture);
- if (!d->control)
- return NormalQuality;
- return d->control->imageSettings().quality();
+ return d->control ? d->control->imageSettings().quality() : NormalQuality;
}
/*!
diff --git a/src/multimedia/platform/qplatformmediaintegration.cpp b/src/multimedia/platform/qplatformmediaintegration.cpp
index 712d8a47f..e97dca08c 100644
--- a/src/multimedia/platform/qplatformmediaintegration.cpp
+++ b/src/multimedia/platform/qplatformmediaintegration.cpp
@@ -104,12 +104,12 @@ QList<QCameraDevice> QPlatformMediaIntegration::videoInputs()
return m_videoDevices ? m_videoDevices->videoDevices() : QList<QCameraDevice>{};
}
-QPlatformAudioInput *QPlatformMediaIntegration::createAudioInput(QAudioInput *q)
+QMaybe<QPlatformAudioInput *> QPlatformMediaIntegration::createAudioInput(QAudioInput *q)
{
return new QPlatformAudioInput(q);
}
-QPlatformAudioOutput *QPlatformMediaIntegration::createAudioOutput(QAudioOutput *q)
+QMaybe<QPlatformAudioOutput *> QPlatformMediaIntegration::createAudioOutput(QAudioOutput *q)
{
return new QPlatformAudioOutput(q);
}
diff --git a/src/multimedia/platform/qplatformmediaintegration_p.h b/src/multimedia/platform/qplatformmediaintegration_p.h
index 6e60e41bc..771063972 100644
--- a/src/multimedia/platform/qplatformmediaintegration_p.h
+++ b/src/multimedia/platform/qplatformmediaintegration_p.h
@@ -15,7 +15,9 @@
//
#include <private/qtmultimediaglobal_p.h>
+#include <private/qmultimediautils_p.h>
#include <qmediarecorder.h>
+#include <qstring.h>
QT_BEGIN_NAMESPACE
@@ -46,6 +48,7 @@ class QPlatformVideoDevices;
class Q_MULTIMEDIA_EXPORT QPlatformMediaIntegration
{
+ inline static const QString notAvailable = QStringLiteral("Not available");
public:
static QPlatformMediaIntegration *instance();
@@ -56,19 +59,19 @@ public:
virtual QPlatformMediaFormatInfo *formatInfo() = 0;
virtual QList<QCameraDevice> videoInputs();
- virtual QPlatformCamera *createCamera(QCamera *) { return nullptr; }
+ virtual QMaybe<QPlatformCamera *> createCamera(QCamera *) { return notAvailable; }
virtual QPlatformScreenCapture *createScreenCapture(QScreenCapture *) { return nullptr; }
- virtual QPlatformAudioDecoder *createAudioDecoder(QAudioDecoder *) { return nullptr; }
- virtual QPlatformMediaCaptureSession *createCaptureSession() { return nullptr; }
- virtual QPlatformMediaPlayer *createPlayer(QMediaPlayer *) { return nullptr; }
- virtual QPlatformMediaRecorder *createRecorder(QMediaRecorder *) { return nullptr; }
- virtual QPlatformImageCapture *createImageCapture(QImageCapture *) { return nullptr; }
+ virtual QMaybe<QPlatformAudioDecoder *> createAudioDecoder(QAudioDecoder *) { return notAvailable; }
+ virtual QMaybe<QPlatformMediaCaptureSession *> createCaptureSession() { return notAvailable; }
+ virtual QMaybe<QPlatformMediaPlayer *> createPlayer(QMediaPlayer *) { return notAvailable; }
+ virtual QMaybe<QPlatformMediaRecorder *> createRecorder(QMediaRecorder *) { return notAvailable; }
+ virtual QMaybe<QPlatformImageCapture *> createImageCapture(QImageCapture *) { return notAvailable; }
- virtual QPlatformAudioInput *createAudioInput(QAudioInput *);
- virtual QPlatformAudioOutput *createAudioOutput(QAudioOutput *);
+ virtual QMaybe<QPlatformAudioInput *> createAudioInput(QAudioInput *);
+ virtual QMaybe<QPlatformAudioOutput *> createAudioOutput(QAudioOutput *);
- virtual QPlatformVideoSink *createVideoSink(QVideoSink *) { return nullptr; }
+ virtual QMaybe<QPlatformVideoSink *> createVideoSink(QVideoSink *) { return notAvailable; }
protected:
QPlatformVideoDevices *m_videoDevices = nullptr;
diff --git a/src/multimedia/playback/qmediaplayer.cpp b/src/multimedia/playback/qmediaplayer.cpp
index 04a1e4a09..947d27e64 100644
--- a/src/multimedia/playback/qmediaplayer.cpp
+++ b/src/multimedia/playback/qmediaplayer.cpp
@@ -233,14 +233,14 @@ QMediaPlayer::QMediaPlayer(QObject *parent)
{
Q_D(QMediaPlayer);
- d->control = QPlatformMediaIntegration::instance()->createPlayer(this);
- if (!d->control) { // ### Should this be an assertion?
- d->setError(QMediaPlayer::ResourceError, QMediaPlayer::tr("Platform does not support media playback."));
- return;
+ auto maybeControl = QPlatformMediaIntegration::instance()->createPlayer(this);
+ if (maybeControl) {
+ d->control = maybeControl.value();
+ d->state = d->control->state();
+ } else {
+ qWarning() << "Failed to initialize QMediaPlayer" << maybeControl.error();
+ d->setError(QMediaPlayer::ResourceError, maybeControl.error());
}
- Q_ASSERT(d->control);
-
- d->state = d->control->state();
}
@@ -289,7 +289,7 @@ QMediaPlayer::PlaybackState QMediaPlayer::playbackState() const
// In case if EndOfMedia status is already received
// but state is not.
- if (d->control != nullptr
+ if (d->control
&& d->control->mediaStatus() == QMediaPlayer::EndOfMedia
&& d->state != d->control->state()) {
return d->control->state();
@@ -314,11 +314,7 @@ QMediaPlayer::MediaStatus QMediaPlayer::mediaStatus() const
qint64 QMediaPlayer::duration() const
{
Q_D(const QMediaPlayer);
-
- if (d->control != nullptr)
- return d->control->duration();
-
- return 0;
+ return d->control ? d->control->duration() : 0;
}
/*!
@@ -331,11 +327,7 @@ qint64 QMediaPlayer::duration() const
qint64 QMediaPlayer::position() const
{
Q_D(const QMediaPlayer);
-
- if (d->control != nullptr)
- return d->control->position();
-
- return 0;
+ return d->control ? d->control->position() : 0;
}
/*!
@@ -350,11 +342,7 @@ qint64 QMediaPlayer::position() const
float QMediaPlayer::bufferProgress() const
{
Q_D(const QMediaPlayer);
-
- if (d->control != nullptr)
- return d->control->bufferProgress();
-
- return 0.;
+ return d->control ? d->control->bufferProgress() : 0;
}
/*!
@@ -369,11 +357,7 @@ float QMediaPlayer::bufferProgress() const
QMediaTimeRange QMediaPlayer::bufferedTimeRange() const
{
Q_D(const QMediaPlayer);
-
- if (d->control)
- return d->control->availablePlaybackRanges();
-
- return {};
+ return d->control ? d->control->availablePlaybackRanges() : QMediaTimeRange{};
}
/*!
@@ -389,11 +373,7 @@ QMediaTimeRange QMediaPlayer::bufferedTimeRange() const
bool QMediaPlayer::hasAudio() const
{
Q_D(const QMediaPlayer);
-
- if (d->control != nullptr)
- return d->control->isAudioAvailable();
-
- return false;
+ return d->control && d->control->isAudioAvailable();
}
/*!
@@ -409,11 +389,7 @@ bool QMediaPlayer::hasAudio() const
bool QMediaPlayer::hasVideo() const
{
Q_D(const QMediaPlayer);
-
- if (d->control != nullptr)
- return d->control->isVideoAvailable();
-
- return false;
+ return d->control && d->control->isVideoAvailable();
}
/*!
@@ -425,11 +401,7 @@ bool QMediaPlayer::hasVideo() const
bool QMediaPlayer::isSeekable() const
{
Q_D(const QMediaPlayer);
-
- if (d->control != nullptr)
- return d->control->isSeekable();
-
- return false;
+ return d->control && d->control->isSeekable();
}
/*!
@@ -438,11 +410,7 @@ bool QMediaPlayer::isSeekable() const
qreal QMediaPlayer::playbackRate() const
{
Q_D(const QMediaPlayer);
-
- if (d->control != nullptr)
- return d->control->playbackRate();
-
- return 0.0;
+ return d->control ? d->control->playbackRate() : 0.;
}
/*!
@@ -474,11 +442,7 @@ qreal QMediaPlayer::playbackRate() const
int QMediaPlayer::loops() const
{
Q_D(const QMediaPlayer);
-
- if (d->control)
- return d->control->loops();
-
- return 1;
+ return d->control ? d->control->loops() : 1;
}
void QMediaPlayer::setLoops(int loops)
@@ -559,7 +523,7 @@ void QMediaPlayer::pause()
{
Q_D(QMediaPlayer);
- if (d->control != nullptr)
+ if (d->control)
d->control->pause();
}
@@ -580,7 +544,7 @@ void QMediaPlayer::stop()
{
Q_D(QMediaPlayer);
- if (d->control != nullptr)
+ if (d->control)
d->control->stop();
}
@@ -588,7 +552,7 @@ void QMediaPlayer::setPosition(qint64 position)
{
Q_D(QMediaPlayer);
- if (d->control == nullptr)
+ if (!d->control)
return;
if (!d->control->isSeekable())
return;
@@ -599,7 +563,7 @@ void QMediaPlayer::setPlaybackRate(qreal rate)
{
Q_D(QMediaPlayer);
- if (d->control != nullptr)
+ if (d->control)
d->control->setPlaybackRate(rate);
}
@@ -696,12 +660,14 @@ void QMediaPlayer::setAudioOutput(QAudioOutput *output)
if (oldOutput == output)
return;
d->audioOutput = output;
- d->control->setAudioOutput(nullptr);
+ if (d->control)
+ d->control->setAudioOutput(nullptr);
if (oldOutput)
oldOutput->setDisconnectFunction({});
if (output) {
output->setDisconnectFunction([this](){ setAudioOutput(nullptr); });
- d->control->setAudioOutput(output->handle());
+ if (d->control)
+ d->control->setAudioOutput(output->handle());
}
emit audioOutputChanged();
}
@@ -807,9 +773,7 @@ QList<QMediaMetaData> QMediaPlayer::subtitleTracks() const
int QMediaPlayer::activeAudioTrack() const
{
Q_D(const QMediaPlayer);
- if (d->control)
- return d->control->activeTrack(QPlatformMediaPlayer::AudioStream);
- return 0;
+ return d->control ? d->control->activeTrack(QPlatformMediaPlayer::AudioStream) : 0;
}
/*!
@@ -833,9 +797,7 @@ int QMediaPlayer::activeAudioTrack() const
int QMediaPlayer::activeVideoTrack() const
{
Q_D(const QMediaPlayer);
- if (d->control)
- return d->control->activeTrack(QPlatformMediaPlayer::VideoStream);
- return -1;
+ return d->control ? d->control->activeTrack(QPlatformMediaPlayer::VideoStream) : -1;
}
/*!
@@ -859,9 +821,7 @@ int QMediaPlayer::activeVideoTrack() const
int QMediaPlayer::activeSubtitleTrack() const
{
Q_D(const QMediaPlayer);
- if (d->control)
- return d->control->activeTrack(QPlatformMediaPlayer::SubtitleStream);
- return -1;
+ return d->control ? d->control->activeTrack(QPlatformMediaPlayer::SubtitleStream) : -1;
}
void QMediaPlayer::setActiveAudioTrack(int index)
@@ -925,16 +885,13 @@ QObject *QMediaPlayer::videoOutput() const
void QMediaPlayer::setVideoOutput(QObject *output)
{
Q_D(QMediaPlayer);
- if (!d->control)
- return;
if (d->videoOutput == output)
return;
- QVideoSink *sink = qobject_cast<QVideoSink *>(output);
+ auto *sink = qobject_cast<QVideoSink *>(output);
if (!sink && output) {
auto *mo = output->metaObject();
- if (output)
- mo->invokeMethod(output, "videoSink", Q_RETURN_ARG(QVideoSink *, sink));
+ mo->invokeMethod(output, "videoSink", Q_RETURN_ARG(QVideoSink *, sink));
}
d->videoOutput = output;
d->setVideoSink(sink);
@@ -943,9 +900,6 @@ void QMediaPlayer::setVideoOutput(QObject *output)
void QMediaPlayer::setVideoSink(QVideoSink *sink)
{
Q_D(QMediaPlayer);
- if (!d->control)
- return;
-
d->videoOutput = nullptr;
d->setVideoSink(sink);
}
@@ -980,11 +934,7 @@ void QMediaPlayer::setVideoOutput(const QList<QVideoSink *> &sinks)
bool QMediaPlayer::isAvailable() const
{
Q_D(const QMediaPlayer);
-
- if (!d->control)
- return false;
-
- return true;
+ return bool(d->control);
}
/*!
@@ -1009,7 +959,7 @@ bool QMediaPlayer::isAvailable() const
QMediaMetaData QMediaPlayer::metaData() const
{
Q_D(const QMediaPlayer);
- return d->control->metaData();
+ return d->control ? d->control->metaData() : QMediaMetaData{};
}
// Enums
diff --git a/src/multimedia/playback/qmediaplayer_p.h b/src/multimedia/playback/qmediaplayer_p.h
index db8412ef8..ce9bf091e 100644
--- a/src/multimedia/playback/qmediaplayer_p.h
+++ b/src/multimedia/playback/qmediaplayer_p.h
@@ -72,7 +72,8 @@ public:
videoSink = sink;
if (sink)
sink->setSource(q);
- control->setVideoSink(sink);
+ if (control)
+ control->setVideoSink(sink);
emit q->videoOutputChanged();
}
};
diff --git a/src/multimedia/recording/qmediacapturesession.cpp b/src/multimedia/recording/qmediacapturesession.cpp
index 4cd04804f..cb663b0ce 100644
--- a/src/multimedia/recording/qmediacapturesession.cpp
+++ b/src/multimedia/recording/qmediacapturesession.cpp
@@ -22,7 +22,7 @@ class QMediaCaptureSessionPrivate
{
public:
QMediaCaptureSession *q = nullptr;
- QPlatformMediaCaptureSession *captureSession;
+ QPlatformMediaCaptureSession *captureSession = nullptr;
QAudioInput *audioInput = nullptr;
QAudioOutput *audioOutput = nullptr;
QCamera *camera = nullptr;
@@ -41,7 +41,8 @@ public:
videoSink = sink;
if (sink)
sink->setSource(q);
- captureSession->setVideoPreview(sink);
+ if (captureSession)
+ captureSession->setVideoPreview(sink);
emit q->videoOutputChanged();
}
@@ -126,9 +127,13 @@ QMediaCaptureSession::QMediaCaptureSession(QObject *parent)
d_ptr(new QMediaCaptureSessionPrivate)
{
d_ptr->q = this;
- d_ptr->captureSession = QPlatformMediaIntegration::instance()->createCaptureSession();
- d_ptr->captureSession->setCaptureSession(this);
- Q_ASSERT(d_ptr->captureSession);
+ auto maybeCaptureSession = QPlatformMediaIntegration::instance()->createCaptureSession();
+ if (maybeCaptureSession) {
+ d_ptr->captureSession = maybeCaptureSession.value();
+ d_ptr->captureSession->setCaptureSession(this);
+ } else {
+ qWarning() << "Failed to initialize QMediaCaptureSession" << maybeCaptureSession.error();
+ }
}
/*!
@@ -170,12 +175,14 @@ void QMediaCaptureSession::setAudioInput(QAudioInput *input)
if (oldInput == input)
return;
d_ptr->audioInput = input;
- d_ptr->captureSession->setAudioInput(nullptr);
+ if (d_ptr->captureSession)
+ d_ptr->captureSession->setAudioInput(nullptr);
if (oldInput)
oldInput->setDisconnectFunction({});
if (input) {
input->setDisconnectFunction([this](){ setAudioInput(nullptr); });
- d_ptr->captureSession->setAudioInput(input->handle());
+ if (d_ptr->captureSession)
+ d_ptr->captureSession->setAudioInput(input->handle());
}
emit audioInputChanged();
}
@@ -208,7 +215,8 @@ void QMediaCaptureSession::setCamera(QCamera *camera)
if (oldCamera == camera)
return;
d_ptr->camera = camera;
- d_ptr->captureSession->setCamera(nullptr);
+ if (d_ptr->captureSession)
+ d_ptr->captureSession->setCamera(nullptr);
if (oldCamera) {
if (oldCamera->captureSession() && oldCamera->captureSession() != this)
oldCamera->captureSession()->setCamera(nullptr);
@@ -217,7 +225,8 @@ void QMediaCaptureSession::setCamera(QCamera *camera)
if (camera) {
if (camera->captureSession())
camera->captureSession()->setCamera(nullptr);
- d_ptr->captureSession->setCamera(camera->platformCamera());
+ if (d_ptr->captureSession)
+ d_ptr->captureSession->setCamera(camera->platformCamera());
camera->setCaptureSession(this);
}
emit cameraChanged();
@@ -251,7 +260,8 @@ void QMediaCaptureSession::setScreenCapture(QScreenCapture *screenCapture)
if (oldScreenCapture == screenCapture)
return;
d_ptr->screenCapture = screenCapture;
- d_ptr->captureSession->setScreenCapture(nullptr);
+ if (d_ptr->captureSession)
+ d_ptr->captureSession->setScreenCapture(nullptr);
if (oldScreenCapture) {
if (oldScreenCapture->captureSession() && oldScreenCapture->captureSession() != this)
oldScreenCapture->captureSession()->setScreenCapture(nullptr);
@@ -260,7 +270,8 @@ void QMediaCaptureSession::setScreenCapture(QScreenCapture *screenCapture)
if (screenCapture) {
if (screenCapture->captureSession())
screenCapture->captureSession()->setScreenCapture(nullptr);
- d_ptr->captureSession->setScreenCapture(screenCapture->platformScreenCapture());
+ if (d_ptr->captureSession)
+ d_ptr->captureSession->setScreenCapture(screenCapture->platformScreenCapture());
screenCapture->setCaptureSession(this);
}
emit screenCaptureChanged();
@@ -292,7 +303,8 @@ void QMediaCaptureSession::setImageCapture(QImageCapture *imageCapture)
if (oldImageCapture == imageCapture)
return;
d_ptr->imageCapture = imageCapture;
- d_ptr->captureSession->setImageCapture(nullptr);
+ if (d_ptr->captureSession)
+ d_ptr->captureSession->setImageCapture(nullptr);
if (oldImageCapture) {
if (oldImageCapture->captureSession() && oldImageCapture->captureSession() != this)
oldImageCapture->captureSession()->setImageCapture(nullptr);
@@ -301,7 +313,8 @@ void QMediaCaptureSession::setImageCapture(QImageCapture *imageCapture)
if (imageCapture) {
if (imageCapture->captureSession())
imageCapture->captureSession()->setImageCapture(nullptr);
- d_ptr->captureSession->setImageCapture(imageCapture->platformImageCapture());
+ if (d_ptr->captureSession)
+ d_ptr->captureSession->setImageCapture(imageCapture->platformImageCapture());
imageCapture->setCaptureSession(this);
}
emit imageCaptureChanged();
@@ -334,7 +347,8 @@ void QMediaCaptureSession::setRecorder(QMediaRecorder *recorder)
if (oldRecorder == recorder)
return;
d_ptr->recorder = recorder;
- d_ptr->captureSession->setMediaRecorder(nullptr);
+ if (d_ptr->captureSession)
+ d_ptr->captureSession->setMediaRecorder(nullptr);
if (oldRecorder) {
if (oldRecorder->captureSession() && oldRecorder->captureSession() != this)
oldRecorder->captureSession()->setRecorder(nullptr);
@@ -343,7 +357,8 @@ void QMediaCaptureSession::setRecorder(QMediaRecorder *recorder)
if (recorder) {
if (recorder->captureSession())
recorder->captureSession()->setRecorder(nullptr);
- d_ptr->captureSession->setMediaRecorder(recorder->platformRecoder());
+ if (d_ptr->captureSession)
+ d_ptr->captureSession->setMediaRecorder(recorder->platformRecoder());
recorder->setCaptureSession(this);
}
emit recorderChanged();
@@ -414,12 +429,14 @@ void QMediaCaptureSession::setAudioOutput(QAudioOutput *output)
if (oldOutput == output)
return;
d_ptr->audioOutput = output;
- d_ptr->captureSession->setAudioOutput(nullptr);
+ if (d_ptr->captureSession)
+ d_ptr->captureSession->setAudioOutput(nullptr);
if (oldOutput)
oldOutput->setDisconnectFunction({});
if (output) {
output->setDisconnectFunction([this](){ setAudioOutput(nullptr); });
- d_ptr->captureSession->setAudioOutput(output->handle());
+ if (d_ptr->captureSession)
+ d_ptr->captureSession->setAudioOutput(output->handle());
}
emit audioOutputChanged();
}
diff --git a/src/multimedia/recording/qmediarecorder.cpp b/src/multimedia/recording/qmediarecorder.cpp
index 9faf11591..b88d1f425 100644
--- a/src/multimedia/recording/qmediarecorder.cpp
+++ b/src/multimedia/recording/qmediarecorder.cpp
@@ -108,7 +108,13 @@ QMediaRecorder::QMediaRecorder(QObject *parent)
{
Q_D(QMediaRecorder);
d->q_ptr = this;
- d->control = QPlatformMediaIntegration::instance()->createRecorder(this);
+ auto maybeControl = QPlatformMediaIntegration::instance()->createRecorder(this);
+ if (maybeControl) {
+ d->control = maybeControl.value();
+ } else {
+ d->initErrorMessage = maybeControl.error();
+ qWarning() << "Failed to initialize QMediaRecorder" << maybeControl.error();
+ }
}
/*!
@@ -192,7 +198,7 @@ void QMediaRecorder::setCaptureSession(QMediaCaptureSession *session)
*/
bool QMediaRecorder::isAvailable() const
{
- return d_func()->control != nullptr && d_func()->captureSession;
+ return d_func()->control && d_func()->captureSession;
}
QUrl QMediaRecorder::outputLocation() const
@@ -204,7 +210,7 @@ void QMediaRecorder::setOutputLocation(const QUrl &location)
{
Q_D(QMediaRecorder);
if (!d->control) {
- emit errorOccurred(QMediaRecorder::ResourceError, tr("Not available"));
+ emit errorOccurred(QMediaRecorder::ResourceError, d->initErrorMessage);
return;
}
d->control->setOutputLocation(location);
@@ -258,7 +264,7 @@ QString QMediaRecorder::errorString() const
{
Q_D(const QMediaRecorder);
- return d->control ? d->control->errorString() : tr("QMediaRecorder not supported on this platform");
+ return d->control ? d->control->errorString() : d->initErrorMessage;
}
/*!
\qmlproperty qint64 QtMultimedia::MediaRecorder::duration
diff --git a/src/multimedia/recording/qmediarecorder_p.h b/src/multimedia/recording/qmediarecorder_p.h
index 618106848..193aa5f00 100644
--- a/src/multimedia/recording/qmediarecorder_p.h
+++ b/src/multimedia/recording/qmediarecorder_p.h
@@ -37,6 +37,7 @@ public:
QMediaCaptureSession *captureSession = nullptr;
QPlatformMediaRecorder *control = nullptr;
+ QString initErrorMessage;
bool settingsChanged = false;
diff --git a/src/multimedia/video/qvideosink.cpp b/src/multimedia/video/qvideosink.cpp
index 22c8b1bb0..3597255d5 100644
--- a/src/multimedia/video/qvideosink.cpp
+++ b/src/multimedia/video/qvideosink.cpp
@@ -22,7 +22,12 @@ public:
QVideoSinkPrivate(QVideoSink *q)
: q_ptr(q)
{
- videoSink = QPlatformMediaIntegration::instance()->createVideoSink(q);
+ auto maybeVideoSink = QPlatformMediaIntegration::instance()->createVideoSink(q);
+ if (maybeVideoSink) {
+ videoSink = maybeVideoSink.value();
+ } else {
+ qWarning() << "Failed to create QVideoSink" << maybeVideoSink.error();
+ }
}
~QVideoSinkPrivate()
{
@@ -109,7 +114,8 @@ void QVideoSink::setRhi(QRhi *rhi)
if (d->rhi == rhi)
return;
d->rhi = rhi;
- d->videoSink->setRhi(rhi);
+ if (d->videoSink)
+ d->videoSink->setRhi(rhi);
}
/*!
@@ -125,7 +131,7 @@ QPlatformVideoSink *QVideoSink::platformVideoSink() const
*/
QVideoFrame QVideoSink::videoFrame() const
{
- return d->videoSink->currentVideoFrame();
+ return d->videoSink ? d->videoSink->currentVideoFrame() : QVideoFrame{};
}
/*!
@@ -133,7 +139,8 @@ QVideoFrame QVideoSink::videoFrame() const
*/
void QVideoSink::setVideoFrame(const QVideoFrame &frame)
{
- d->videoSink->setVideoFrame(frame);
+ if (d->videoSink)
+ d->videoSink->setVideoFrame(frame);
}
/*!
@@ -141,7 +148,7 @@ void QVideoSink::setVideoFrame(const QVideoFrame &frame)
*/
QString QVideoSink::subtitleText() const
{
- return d->videoSink->subtitleText();
+ return d->videoSink ? d->videoSink->subtitleText() : QString{};
}
/*!
@@ -149,7 +156,8 @@ QString QVideoSink::subtitleText() const
*/
void QVideoSink::setSubtitleText(const QString &subtitle)
{
- d->videoSink->setSubtitleText(subtitle);
+ if (d->videoSink)
+ d->videoSink->setSubtitleText(subtitle);
}
/*!
diff --git a/src/plugins/multimedia/android/qandroidintegration.cpp b/src/plugins/multimedia/android/qandroidintegration.cpp
index 1ecd66d49..b33717341 100644
--- a/src/plugins/multimedia/android/qandroidintegration.cpp
+++ b/src/plugins/multimedia/android/qandroidintegration.cpp
@@ -54,7 +54,7 @@ QAndroidIntegration::~QAndroidIntegration()
delete m_formatInfo;
}
-QPlatformAudioDecoder *QAndroidIntegration::createAudioDecoder(QAudioDecoder *decoder)
+QMaybe<QPlatformAudioDecoder *> QAndroidIntegration::createAudioDecoder(QAudioDecoder *decoder)
{
return new QAndroidAudioDecoder(decoder);
}
@@ -67,42 +67,42 @@ QPlatformMediaFormatInfo *QAndroidIntegration::formatInfo()
}
-QPlatformMediaCaptureSession *QAndroidIntegration::createCaptureSession()
+QMaybe<QPlatformMediaCaptureSession *> QAndroidIntegration::createCaptureSession()
{
return new QAndroidMediaCaptureSession();
}
-QPlatformMediaPlayer *QAndroidIntegration::createPlayer(QMediaPlayer *player)
+QMaybe<QPlatformMediaPlayer *> QAndroidIntegration::createPlayer(QMediaPlayer *player)
{
return new QAndroidMediaPlayer(player);
}
-QPlatformCamera *QAndroidIntegration::createCamera(QCamera *camera)
+QMaybe<QPlatformCamera *> QAndroidIntegration::createCamera(QCamera *camera)
{
return new QAndroidCamera(camera);
}
-QPlatformMediaRecorder *QAndroidIntegration::createRecorder(QMediaRecorder *recorder)
+QMaybe<QPlatformMediaRecorder *> QAndroidIntegration::createRecorder(QMediaRecorder *recorder)
{
return new QAndroidMediaEncoder(recorder);
}
-QPlatformImageCapture *QAndroidIntegration::createImageCapture(QImageCapture *imageCapture)
+QMaybe<QPlatformImageCapture *> QAndroidIntegration::createImageCapture(QImageCapture *imageCapture)
{
return new QAndroidImageCapture(imageCapture);
}
-QPlatformAudioOutput *QAndroidIntegration::createAudioOutput(QAudioOutput *q)
+QMaybe<QPlatformAudioOutput *> QAndroidIntegration::createAudioOutput(QAudioOutput *q)
{
return new QAndroidAudioOutput(q);
}
-QPlatformAudioInput *QAndroidIntegration::createAudioInput(QAudioInput *audioInput)
+QMaybe<QPlatformAudioInput *> QAndroidIntegration::createAudioInput(QAudioInput *audioInput)
{
return new QAndroidAudioInput(audioInput);
}
-QPlatformVideoSink *QAndroidIntegration::createVideoSink(QVideoSink *sink)
+QMaybe<QPlatformVideoSink *> QAndroidIntegration::createVideoSink(QVideoSink *sink)
{
return new QAndroidVideoSink(sink);
}
diff --git a/src/plugins/multimedia/android/qandroidintegration_p.h b/src/plugins/multimedia/android/qandroidintegration_p.h
index 4072b014d..d6df4dbef 100644
--- a/src/plugins/multimedia/android/qandroidintegration_p.h
+++ b/src/plugins/multimedia/android/qandroidintegration_p.h
@@ -29,17 +29,17 @@ public:
QPlatformMediaFormatInfo *formatInfo() override;
- QPlatformAudioDecoder *createAudioDecoder(QAudioDecoder *decoder) override;
- QPlatformMediaCaptureSession *createCaptureSession() override;
- QPlatformMediaPlayer *createPlayer(QMediaPlayer *player) override;
- QPlatformCamera *createCamera(QCamera *camera) override;
- QPlatformMediaRecorder *createRecorder(QMediaRecorder *recorder) override;
- QPlatformImageCapture *createImageCapture(QImageCapture *imageCapture) override;
+ QMaybe<QPlatformAudioDecoder *> createAudioDecoder(QAudioDecoder *decoder) override;
+ QMaybe<QPlatformMediaCaptureSession *> createCaptureSession() override;
+ QMaybe<QPlatformMediaPlayer *> createPlayer(QMediaPlayer *player) override;
+ QMaybe<QPlatformCamera *> createCamera(QCamera *camera) override;
+ QMaybe<QPlatformMediaRecorder *> createRecorder(QMediaRecorder *recorder) override;
+ QMaybe<QPlatformImageCapture *> createImageCapture(QImageCapture *imageCapture) override;
- QPlatformAudioOutput *createAudioOutput(QAudioOutput *q) override;
- QPlatformAudioInput *createAudioInput(QAudioInput *audioInput) override;
+ QMaybe<QPlatformAudioOutput *> createAudioOutput(QAudioOutput *q) override;
+ QMaybe<QPlatformAudioInput *> createAudioInput(QAudioInput *audioInput) override;
- QPlatformVideoSink *createVideoSink(QVideoSink *) override;
+ QMaybe<QPlatformVideoSink *> createVideoSink(QVideoSink *) override;
QList<QCameraDevice> videoInputs() override;
QPlatformMediaFormatInfo *m_formatInfo = nullptr;
diff --git a/src/plugins/multimedia/darwin/qdarwinintegration.mm b/src/plugins/multimedia/darwin/qdarwinintegration.mm
index 314ceaff6..5e26fe5c4 100644
--- a/src/plugins/multimedia/darwin/qdarwinintegration.mm
+++ b/src/plugins/multimedia/darwin/qdarwinintegration.mm
@@ -57,37 +57,37 @@ QPlatformMediaFormatInfo *QDarwinIntegration::formatInfo()
return m_formatInfo;
}
-QPlatformAudioDecoder *QDarwinIntegration::createAudioDecoder(QAudioDecoder *decoder)
+QMaybe<QPlatformAudioDecoder *> QDarwinIntegration::createAudioDecoder(QAudioDecoder *decoder)
{
return new AVFAudioDecoder(decoder);
}
-QPlatformMediaCaptureSession *QDarwinIntegration::createCaptureSession()
+QMaybe<QPlatformMediaCaptureSession *> QDarwinIntegration::createCaptureSession()
{
return new AVFCameraService;
}
-QPlatformMediaPlayer *QDarwinIntegration::createPlayer(QMediaPlayer *player)
+QMaybe<QPlatformMediaPlayer *> QDarwinIntegration::createPlayer(QMediaPlayer *player)
{
return new AVFMediaPlayer(player);
}
-QPlatformCamera *QDarwinIntegration::createCamera(QCamera *camera)
+QMaybe<QPlatformCamera *> QDarwinIntegration::createCamera(QCamera *camera)
{
return new AVFCamera(camera);
}
-QPlatformMediaRecorder *QDarwinIntegration::createRecorder(QMediaRecorder *recorder)
+QMaybe<QPlatformMediaRecorder *> QDarwinIntegration::createRecorder(QMediaRecorder *recorder)
{
return new AVFMediaEncoder(recorder);
}
-QPlatformImageCapture *QDarwinIntegration::createImageCapture(QImageCapture *imageCapture)
+QMaybe<QPlatformImageCapture *> QDarwinIntegration::createImageCapture(QImageCapture *imageCapture)
{
return new AVFImageCapture(imageCapture);
}
-QPlatformVideoSink *QDarwinIntegration::createVideoSink(QVideoSink *sink)
+QMaybe<QPlatformVideoSink *> QDarwinIntegration::createVideoSink(QVideoSink *sink)
{
return new AVFVideoSink(sink);
}
diff --git a/src/plugins/multimedia/darwin/qdarwinintegration_p.h b/src/plugins/multimedia/darwin/qdarwinintegration_p.h
index eb6bfbdce..f8f897c51 100644
--- a/src/plugins/multimedia/darwin/qdarwinintegration_p.h
+++ b/src/plugins/multimedia/darwin/qdarwinintegration_p.h
@@ -29,14 +29,14 @@ public:
QPlatformMediaFormatInfo *formatInfo() override;
- QPlatformAudioDecoder *createAudioDecoder(QAudioDecoder *) override;
- QPlatformMediaCaptureSession *createCaptureSession() override;
- QPlatformMediaPlayer *createPlayer(QMediaPlayer *player) override;
- QPlatformCamera *createCamera(QCamera *camera) override;
- QPlatformMediaRecorder *createRecorder(QMediaRecorder *) override;
- QPlatformImageCapture *createImageCapture(QImageCapture *) override;
-
- QPlatformVideoSink *createVideoSink(QVideoSink *) override;
+ QMaybe<QPlatformAudioDecoder *> createAudioDecoder(QAudioDecoder *) override;
+ QMaybe<QPlatformMediaCaptureSession *> createCaptureSession() override;
+ QMaybe<QPlatformMediaPlayer *> createPlayer(QMediaPlayer *player) override;
+ QMaybe<QPlatformCamera *> createCamera(QCamera *camera) override;
+ QMaybe<QPlatformMediaRecorder *> createRecorder(QMediaRecorder *) override;
+ QMaybe<QPlatformImageCapture *> createImageCapture(QImageCapture *) override;
+
+ QMaybe<QPlatformVideoSink *> createVideoSink(QVideoSink *) override;
QPlatformMediaFormatInfo *m_formatInfo = nullptr;
};
diff --git a/src/plugins/multimedia/ffmpeg/qffmpegmediaintegration.cpp b/src/plugins/multimedia/ffmpeg/qffmpegmediaintegration.cpp
index b3e005996..102a7bff2 100644
--- a/src/plugins/multimedia/ffmpeg/qffmpegmediaintegration.cpp
+++ b/src/plugins/multimedia/ffmpeg/qffmpegmediaintegration.cpp
@@ -92,22 +92,22 @@ QPlatformMediaFormatInfo *QFFmpegMediaIntegration::formatInfo()
return m_formatsInfo;
}
-QPlatformAudioDecoder *QFFmpegMediaIntegration::createAudioDecoder(QAudioDecoder *decoder)
+QMaybe<QPlatformAudioDecoder *> QFFmpegMediaIntegration::createAudioDecoder(QAudioDecoder *decoder)
{
return new QFFmpegAudioDecoder(decoder);
}
-QPlatformMediaCaptureSession *QFFmpegMediaIntegration::createCaptureSession()
+QMaybe<QPlatformMediaCaptureSession *> QFFmpegMediaIntegration::createCaptureSession()
{
return new QFFmpegMediaCaptureSession();
}
-QPlatformMediaPlayer *QFFmpegMediaIntegration::createPlayer(QMediaPlayer *player)
+QMaybe<QPlatformMediaPlayer *> QFFmpegMediaIntegration::createPlayer(QMediaPlayer *player)
{
return new QFFmpegMediaPlayer(player);
}
-QPlatformCamera *QFFmpegMediaIntegration::createCamera(QCamera *camera)
+QMaybe<QPlatformCamera *> QFFmpegMediaIntegration::createCamera(QCamera *camera)
{
#ifdef Q_OS_DARWIN
return new QAVFCamera(camera);
@@ -134,22 +134,22 @@ QPlatformScreenCapture *QFFmpegMediaIntegration::createScreenCapture(QScreenCapt
#endif
}
-QPlatformMediaRecorder *QFFmpegMediaIntegration::createRecorder(QMediaRecorder *recorder)
+QMaybe<QPlatformMediaRecorder *> QFFmpegMediaIntegration::createRecorder(QMediaRecorder *recorder)
{
return new QFFmpegMediaRecorder(recorder);
}
-QPlatformImageCapture *QFFmpegMediaIntegration::createImageCapture(QImageCapture *imageCapture)
+QMaybe<QPlatformImageCapture *> QFFmpegMediaIntegration::createImageCapture(QImageCapture *imageCapture)
{
return new QFFmpegImageCapture(imageCapture);
}
-QPlatformVideoSink *QFFmpegMediaIntegration::createVideoSink(QVideoSink *sink)
+QMaybe<QPlatformVideoSink *> QFFmpegMediaIntegration::createVideoSink(QVideoSink *sink)
{
return new QFFmpegVideoSink(sink);
}
-QPlatformAudioInput *QFFmpegMediaIntegration::createAudioInput(QAudioInput *input)
+QMaybe<QPlatformAudioInput *> QFFmpegMediaIntegration::createAudioInput(QAudioInput *input)
{
return new QFFmpegAudioInput(input);
}
diff --git a/src/plugins/multimedia/ffmpeg/qffmpegmediaintegration_p.h b/src/plugins/multimedia/ffmpeg/qffmpegmediaintegration_p.h
index 35bbd52d6..63c977340 100644
--- a/src/plugins/multimedia/ffmpeg/qffmpegmediaintegration_p.h
+++ b/src/plugins/multimedia/ffmpeg/qffmpegmediaintegration_p.h
@@ -30,17 +30,17 @@ public:
static QFFmpegMediaIntegration *instance() { return static_cast<QFFmpegMediaIntegration *>(QPlatformMediaIntegration::instance()); }
QPlatformMediaFormatInfo *formatInfo() override;
- QPlatformAudioDecoder *createAudioDecoder(QAudioDecoder *decoder) override;
- QPlatformMediaCaptureSession *createCaptureSession() override;
- QPlatformMediaPlayer *createPlayer(QMediaPlayer *player) override;
- QPlatformCamera *createCamera(QCamera *) override;
+ QMaybe<QPlatformAudioDecoder *> createAudioDecoder(QAudioDecoder *decoder) override;
+ QMaybe<QPlatformMediaCaptureSession *> createCaptureSession() override;
+ QMaybe<QPlatformMediaPlayer *> createPlayer(QMediaPlayer *player) override;
+ QMaybe<QPlatformCamera *> createCamera(QCamera *) override;
QPlatformScreenCapture *createScreenCapture(QScreenCapture *) override;
- QPlatformMediaRecorder *createRecorder(QMediaRecorder *) override;
- QPlatformImageCapture *createImageCapture(QImageCapture *) override;
+ QMaybe<QPlatformMediaRecorder *> createRecorder(QMediaRecorder *) override;
+ QMaybe<QPlatformImageCapture *> createImageCapture(QImageCapture *) override;
- QPlatformVideoSink *createVideoSink(QVideoSink *sink) override;
+ QMaybe<QPlatformVideoSink *> createVideoSink(QVideoSink *sink) override;
- QPlatformAudioInput *createAudioInput(QAudioInput *input) override;
+ QMaybe<QPlatformAudioInput *> createAudioInput(QAudioInput *input) override;
// QPlatformAudioOutput *createAudioOutput(QAudioOutput *) override;
QFFmpegMediaFormatInfo *m_formatsInfo = nullptr;
diff --git a/src/plugins/multimedia/gstreamer/qgstreamerintegration.cpp b/src/plugins/multimedia/gstreamer/qgstreamerintegration.cpp
index bb2892f83..817aae1c2 100644
--- a/src/plugins/multimedia/gstreamer/qgstreamerintegration.cpp
+++ b/src/plugins/multimedia/gstreamer/qgstreamerintegration.cpp
@@ -59,47 +59,47 @@ const QGstreamerFormatInfo *QGstreamerIntegration::gstFormatsInfo() const
return m_formatsInfo;
}
-QPlatformAudioDecoder *QGstreamerIntegration::createAudioDecoder(QAudioDecoder *decoder)
+QMaybe<QPlatformAudioDecoder *> QGstreamerIntegration::createAudioDecoder(QAudioDecoder *decoder)
{
return new QGstreamerAudioDecoder(decoder);
}
-QPlatformMediaCaptureSession *QGstreamerIntegration::createCaptureSession()
+QMaybe<QPlatformMediaCaptureSession *> QGstreamerIntegration::createCaptureSession()
{
return new QGstreamerMediaCapture();
}
-QPlatformMediaPlayer *QGstreamerIntegration::createPlayer(QMediaPlayer *player)
+QMaybe<QPlatformMediaPlayer *> QGstreamerIntegration::createPlayer(QMediaPlayer *player)
{
return new QGstreamerMediaPlayer(player);
}
-QPlatformCamera *QGstreamerIntegration::createCamera(QCamera *camera)
+QMaybe<QPlatformCamera *> QGstreamerIntegration::createCamera(QCamera *camera)
{
return new QGstreamerCamera(camera);
}
-QPlatformMediaRecorder *QGstreamerIntegration::createRecorder(QMediaRecorder *recorder)
+QMaybe<QPlatformMediaRecorder *> QGstreamerIntegration::createRecorder(QMediaRecorder *recorder)
{
return new QGstreamerMediaEncoder(recorder);
}
-QPlatformImageCapture *QGstreamerIntegration::createImageCapture(QImageCapture *imageCapture)
+QMaybe<QPlatformImageCapture *> QGstreamerIntegration::createImageCapture(QImageCapture *imageCapture)
{
return new QGstreamerImageCapture(imageCapture);
}
-QPlatformVideoSink *QGstreamerIntegration::createVideoSink(QVideoSink *sink)
+QMaybe<QPlatformVideoSink *> QGstreamerIntegration::createVideoSink(QVideoSink *sink)
{
return new QGstreamerVideoSink(sink);
}
-QPlatformAudioInput *QGstreamerIntegration::createAudioInput(QAudioInput *q)
+QMaybe<QPlatformAudioInput *> QGstreamerIntegration::createAudioInput(QAudioInput *q)
{
return new QGstreamerAudioInput(q);
}
-QPlatformAudioOutput *QGstreamerIntegration::createAudioOutput(QAudioOutput *q)
+QMaybe<QPlatformAudioOutput *> QGstreamerIntegration::createAudioOutput(QAudioOutput *q)
{
return new QGstreamerAudioOutput(q);
}
diff --git a/src/plugins/multimedia/gstreamer/qgstreamerintegration_p.h b/src/plugins/multimedia/gstreamer/qgstreamerintegration_p.h
index 2668b51d0..387909b2e 100644
--- a/src/plugins/multimedia/gstreamer/qgstreamerintegration_p.h
+++ b/src/plugins/multimedia/gstreamer/qgstreamerintegration_p.h
@@ -31,17 +31,17 @@ public:
static QGstreamerIntegration *instance() { return static_cast<QGstreamerIntegration *>(QPlatformMediaIntegration::instance()); }
QPlatformMediaFormatInfo *formatInfo() override;
- QPlatformAudioDecoder *createAudioDecoder(QAudioDecoder *decoder) override;
- QPlatformMediaCaptureSession *createCaptureSession() override;
- QPlatformMediaPlayer *createPlayer(QMediaPlayer *player) override;
- QPlatformCamera *createCamera(QCamera *) override;
- QPlatformMediaRecorder *createRecorder(QMediaRecorder *) override;
- QPlatformImageCapture *createImageCapture(QImageCapture *) override;
+ QMaybe<QPlatformAudioDecoder *> createAudioDecoder(QAudioDecoder *decoder) override;
+ QMaybe<QPlatformMediaCaptureSession *> createCaptureSession() override;
+ QMaybe<QPlatformMediaPlayer *> createPlayer(QMediaPlayer *player) override;
+ QMaybe<QPlatformCamera *> createCamera(QCamera *) override;
+ QMaybe<QPlatformMediaRecorder *> createRecorder(QMediaRecorder *) override;
+ QMaybe<QPlatformImageCapture *> createImageCapture(QImageCapture *) override;
- QPlatformVideoSink *createVideoSink(QVideoSink *sink) override;
+ QMaybe<QPlatformVideoSink *> createVideoSink(QVideoSink *sink) override;
- QPlatformAudioInput *createAudioInput(QAudioInput *) override;
- QPlatformAudioOutput *createAudioOutput(QAudioOutput *) override;
+ QMaybe<QPlatformAudioInput *> createAudioInput(QAudioInput *) override;
+ QMaybe<QPlatformAudioOutput *> createAudioOutput(QAudioOutput *) override;
const QGstreamerFormatInfo *gstFormatsInfo() const;
GstDevice *videoDevice(const QByteArray &id) const;
diff --git a/src/plugins/multimedia/qnx/qqnxmediaintegration.cpp b/src/plugins/multimedia/qnx/qqnxmediaintegration.cpp
index 05f63cc4c..0af18e95b 100644
--- a/src/plugins/multimedia/qnx/qqnxmediaintegration.cpp
+++ b/src/plugins/multimedia/qnx/qqnxmediaintegration.cpp
@@ -49,32 +49,32 @@ QPlatformMediaFormatInfo *QQnxMediaIntegration::formatInfo()
return m_formatInfo;
}
-QPlatformVideoSink *QQnxMediaIntegration::createVideoSink(QVideoSink *sink)
+QMaybe<QPlatformVideoSink *> QQnxMediaIntegration::createVideoSink(QVideoSink *sink)
{
return new QQnxVideoSink(sink);
}
-QPlatformMediaPlayer *QQnxMediaIntegration::createPlayer(QMediaPlayer *parent)
+QMaybe<QPlatformMediaPlayer *> QQnxMediaIntegration::createPlayer(QMediaPlayer *parent)
{
return new QQnxMediaPlayer(parent);
}
-QPlatformMediaCaptureSession *QQnxMediaIntegration::createCaptureSession()
+QMaybe<QPlatformMediaCaptureSession *> QQnxMediaIntegration::createCaptureSession()
{
return new QQnxMediaCaptureSession();
}
-QPlatformMediaRecorder *QQnxMediaIntegration::createRecorder(QMediaRecorder *parent)
+QMaybe<QPlatformMediaRecorder *> QQnxMediaIntegration::createRecorder(QMediaRecorder *parent)
{
return new QQnxMediaRecorder(parent);
}
-QPlatformCamera *QQnxMediaIntegration::createCamera(QCamera *parent)
+QMaybe<QPlatformCamera *> QQnxMediaIntegration::createCamera(QCamera *parent)
{
return new QQnxPlatformCamera(parent);
}
-QPlatformImageCapture *QQnxMediaIntegration::createImageCapture(QImageCapture *parent)
+QMaybe<QPlatformImageCapture *> QQnxMediaIntegration::createImageCapture(QImageCapture *parent)
{
return new QQnxImageCapture(parent);
}
diff --git a/src/plugins/multimedia/qnx/qqnxmediaintegration_p.h b/src/plugins/multimedia/qnx/qqnxmediaintegration_p.h
index 7d185543d..1cb7c0219 100644
--- a/src/plugins/multimedia/qnx/qqnxmediaintegration_p.h
+++ b/src/plugins/multimedia/qnx/qqnxmediaintegration_p.h
@@ -30,17 +30,17 @@ public:
QPlatformMediaFormatInfo *formatInfo() override;
- QPlatformVideoSink *createVideoSink(QVideoSink *sink) override;
+ QMaybe<QPlatformVideoSink *> createVideoSink(QVideoSink *sink) override;
- QPlatformMediaPlayer *createPlayer(QMediaPlayer *parent) override;
+ QMaybe<QPlatformMediaPlayer *> createPlayer(QMediaPlayer *parent) override;
- QPlatformMediaCaptureSession *createCaptureSession() override;
+ QMaybe<QPlatformMediaCaptureSession *> createCaptureSession() override;
- QPlatformMediaRecorder *createRecorder(QMediaRecorder *parent) override;
+ QMaybe<QPlatformMediaRecorder *> createRecorder(QMediaRecorder *parent) override;
- QPlatformCamera *createCamera(QCamera *parent) override;
+ QMaybe<QPlatformCamera *> createCamera(QCamera *parent) override;
- QPlatformImageCapture *createImageCapture(QImageCapture *parent) override;
+ QMaybe<QPlatformImageCapture *> createImageCapture(QImageCapture *parent) override;
QQnxFormatInfo *m_formatInfo = nullptr;
};
diff --git a/src/plugins/multimedia/windows/qwindowsintegration.cpp b/src/plugins/multimedia/windows/qwindowsintegration.cpp
index 883eda6cf..7cb8dd908 100644
--- a/src/plugins/multimedia/windows/qwindowsintegration.cpp
+++ b/src/plugins/multimedia/windows/qwindowsintegration.cpp
@@ -56,37 +56,37 @@ QPlatformMediaFormatInfo *QWindowsMediaIntegration::formatInfo()
return m_formatInfo;
}
-QPlatformMediaCaptureSession *QWindowsMediaIntegration::createCaptureSession()
+QMaybe<QPlatformMediaCaptureSession *> QWindowsMediaIntegration::createCaptureSession()
{
return new QWindowsMediaCaptureService();
}
-QPlatformAudioDecoder *QWindowsMediaIntegration::createAudioDecoder(QAudioDecoder *decoder)
+QMaybe<QPlatformAudioDecoder *> QWindowsMediaIntegration::createAudioDecoder(QAudioDecoder *decoder)
{
return new MFAudioDecoderControl(decoder);
}
-QPlatformMediaPlayer *QWindowsMediaIntegration::createPlayer(QMediaPlayer *parent)
+QMaybe<QPlatformMediaPlayer *> QWindowsMediaIntegration::createPlayer(QMediaPlayer *parent)
{
return new MFPlayerControl(parent);
}
-QPlatformCamera *QWindowsMediaIntegration::createCamera(QCamera *camera)
+QMaybe<QPlatformCamera *> QWindowsMediaIntegration::createCamera(QCamera *camera)
{
return new QWindowsCamera(camera);
}
-QPlatformMediaRecorder *QWindowsMediaIntegration::createRecorder(QMediaRecorder *recorder)
+QMaybe<QPlatformMediaRecorder *> QWindowsMediaIntegration::createRecorder(QMediaRecorder *recorder)
{
return new QWindowsMediaEncoder(recorder);
}
-QPlatformImageCapture *QWindowsMediaIntegration::createImageCapture(QImageCapture *imageCapture)
+QMaybe<QPlatformImageCapture *> QWindowsMediaIntegration::createImageCapture(QImageCapture *imageCapture)
{
return new QWindowsImageCapture(imageCapture);
}
-QPlatformVideoSink *QWindowsMediaIntegration::createVideoSink(QVideoSink *sink)
+QMaybe<QPlatformVideoSink *> QWindowsMediaIntegration::createVideoSink(QVideoSink *sink)
{
return new MFEvrVideoWindowControl(sink);
}
diff --git a/src/plugins/multimedia/windows/qwindowsintegration_p.h b/src/plugins/multimedia/windows/qwindowsintegration_p.h
index 2ab9f82c4..81f5b4572 100644
--- a/src/plugins/multimedia/windows/qwindowsintegration_p.h
+++ b/src/plugins/multimedia/windows/qwindowsintegration_p.h
@@ -31,15 +31,15 @@ public:
QPlatformMediaFormatInfo *formatInfo() override;
- QPlatformMediaCaptureSession *createCaptureSession() override;
+ QMaybe<QPlatformMediaCaptureSession *> createCaptureSession() override;
- QPlatformAudioDecoder *createAudioDecoder(QAudioDecoder *decoder) override;
- QPlatformMediaPlayer *createPlayer(QMediaPlayer *parent) override;
- QPlatformCamera *createCamera(QCamera *camera) override;
- QPlatformMediaRecorder *createRecorder(QMediaRecorder *recorder) override;
- QPlatformImageCapture *createImageCapture(QImageCapture *imageCapture) override;
+ QMaybe<QPlatformAudioDecoder *> createAudioDecoder(QAudioDecoder *decoder) override;
+ QMaybe<QPlatformMediaPlayer *> createPlayer(QMediaPlayer *parent) override;
+ QMaybe<QPlatformCamera *> createCamera(QCamera *camera) override;
+ QMaybe<QPlatformMediaRecorder *> createRecorder(QMediaRecorder *recorder) override;
+ QMaybe<QPlatformImageCapture *> createImageCapture(QImageCapture *imageCapture) override;
- QPlatformVideoSink *createVideoSink(QVideoSink *sink) override;
+ QMaybe<QPlatformVideoSink *> createVideoSink(QVideoSink *sink) override;
QWindowsFormatInfo *m_formatInfo = nullptr;
};
diff --git a/tests/auto/unit/mockbackend/qmockintegration.cpp b/tests/auto/unit/mockbackend/qmockintegration.cpp
index 2f49d7ddb..1346dfd90 100644
--- a/tests/auto/unit/mockbackend/qmockintegration.cpp
+++ b/tests/auto/unit/mockbackend/qmockintegration.cpp
@@ -76,7 +76,7 @@ QMockIntegration::~QMockIntegration()
setIntegration(nullptr);
}
-QPlatformAudioDecoder *QMockIntegration::createAudioDecoder(QAudioDecoder *decoder)
+QMaybe<QPlatformAudioDecoder *> QMockIntegration::createAudioDecoder(QAudioDecoder *decoder)
{
if (m_flags & NoAudioDecoderInterface)
m_lastAudioDecoderControl = nullptr;
@@ -85,7 +85,7 @@ QPlatformAudioDecoder *QMockIntegration::createAudioDecoder(QAudioDecoder *decod
return m_lastAudioDecoderControl;
}
-QPlatformMediaPlayer *QMockIntegration::createPlayer(QMediaPlayer *parent)
+QMaybe<QPlatformMediaPlayer *> QMockIntegration::createPlayer(QMediaPlayer *parent)
{
if (m_flags & NoPlayerInterface)
m_lastPlayer = nullptr;
@@ -94,7 +94,7 @@ QPlatformMediaPlayer *QMockIntegration::createPlayer(QMediaPlayer *parent)
return m_lastPlayer;
}
-QPlatformCamera *QMockIntegration::createCamera(QCamera *parent)
+QMaybe<QPlatformCamera *> QMockIntegration::createCamera(QCamera *parent)
{
if (m_flags & NoCaptureInterface)
m_lastCamera = nullptr;
@@ -103,12 +103,12 @@ QPlatformCamera *QMockIntegration::createCamera(QCamera *parent)
return m_lastCamera;
}
-QPlatformImageCapture *QMockIntegration::createImageCapture(QImageCapture *capture)
+QMaybe<QPlatformImageCapture *> QMockIntegration::createImageCapture(QImageCapture *capture)
{
return new QMockImageCapture(capture);
}
-QPlatformMediaRecorder *QMockIntegration::createRecorder(QMediaRecorder *recorder)
+QMaybe<QPlatformMediaRecorder *> QMockIntegration::createRecorder(QMediaRecorder *recorder)
{
return new QMockMediaEncoder(recorder);
}
@@ -123,7 +123,7 @@ QPlatformScreenCapture *QMockIntegration::createScreenCapture(QScreenCapture *ca
return m_lastScreenCapture;
}
-QPlatformMediaCaptureSession *QMockIntegration::createCaptureSession()
+QMaybe<QPlatformMediaCaptureSession *> QMockIntegration::createCaptureSession()
{
if (m_flags & NoCaptureInterface)
m_lastCaptureService = nullptr;
@@ -132,13 +132,13 @@ QPlatformMediaCaptureSession *QMockIntegration::createCaptureSession()
return m_lastCaptureService;
}
-QPlatformVideoSink *QMockIntegration::createVideoSink(QVideoSink *sink)
+QMaybe<QPlatformVideoSink *> QMockIntegration::createVideoSink(QVideoSink *sink)
{
m_lastVideoSink = new QMockVideoSink(sink);
return m_lastVideoSink;
}
-QPlatformAudioOutput *QMockIntegration::createAudioOutput(QAudioOutput *q)
+QMaybe<QPlatformAudioOutput *> QMockIntegration::createAudioOutput(QAudioOutput *q)
{
return new QMockAudioOutput(q);
}
diff --git a/tests/auto/unit/mockbackend/qmockintegration_p.h b/tests/auto/unit/mockbackend/qmockintegration_p.h
index f59bab9d5..fa93c8df0 100644
--- a/tests/auto/unit/mockbackend/qmockintegration_p.h
+++ b/tests/auto/unit/mockbackend/qmockintegration_p.h
@@ -34,15 +34,15 @@ public:
QPlatformMediaFormatInfo *formatInfo() override { return nullptr; }
- QPlatformAudioDecoder *createAudioDecoder(QAudioDecoder *decoder) override;
- QPlatformMediaPlayer *createPlayer(QMediaPlayer *) override;
- QPlatformCamera *createCamera(QCamera *) override;
- QPlatformMediaRecorder *createRecorder(QMediaRecorder *) override;
- QPlatformImageCapture *createImageCapture(QImageCapture *) override;
- QPlatformMediaCaptureSession *createCaptureSession() override;
- QPlatformVideoSink *createVideoSink(QVideoSink *) override;
-
- QPlatformAudioOutput *createAudioOutput(QAudioOutput *) override;
+ QMaybe<QPlatformAudioDecoder *> createAudioDecoder(QAudioDecoder *decoder) override;
+ QMaybe<QPlatformMediaPlayer *> createPlayer(QMediaPlayer *) override;
+ QMaybe<QPlatformCamera *> createCamera(QCamera *) override;
+ QMaybe<QPlatformMediaRecorder *> createRecorder(QMediaRecorder *) override;
+ QMaybe<QPlatformImageCapture *> createImageCapture(QImageCapture *) override;
+ QMaybe<QPlatformMediaCaptureSession *> createCaptureSession() override;
+ QMaybe<QPlatformVideoSink *> createVideoSink(QVideoSink *) override;
+
+ QMaybe<QPlatformAudioOutput *> createAudioOutput(QAudioOutput *) override;
QPlatformScreenCapture *createScreenCapture(QScreenCapture *) override;