summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2021-02-11 22:47:17 +0100
committerLars Knoll <lars.knoll@qt.io>2021-02-17 08:27:39 +0000
commit4b45c95b5601acbdcd8aee52cf0d8af136b982e3 (patch)
tree6f3a1738209d0bbceee5f2a2cf511856ec49362a
parentd7aa862d368d6d75fa3413f7e3ea7bcbf758c5f1 (diff)
Remove QMediaSource inheritance from QCamera
With this, QMediaSource and QMediaSink are now obsolete and unused. Change-Id: I5356739fc58e2c79d741a19229c6bbd205ba0a73 Reviewed-by: Doris Verria <doris.verria@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
-rw-r--r--src/imports/multimedia/qdeclarativecamera.cpp22
-rw-r--r--src/imports/multimedia/qdeclarativecamera_p.h10
-rw-r--r--src/imports/multimedia/qdeclarativetorch.cpp3
-rw-r--r--src/multimedia/camera/qcamera.cpp41
-rw-r--r--src/multimedia/camera/qcamera.h6
-rw-r--r--src/multimedia/camera/qcamera_p.h24
-rw-r--r--src/multimedia/camera/qcameraexposure.cpp3
-rw-r--r--src/multimedia/camera/qcameraimagecapture.cpp3
-rw-r--r--src/multimedia/recording/qmediarecorder.cpp2
-rw-r--r--tests/auto/unit/multimedia/qcamera/tst_qcamera.cpp14
-rw-r--r--tests/auto/unit/multimedia/qcameraimagecapture/tst_qcameraimagecapture.cpp2
-rw-r--r--tests/auto/unit/multimedia/qmediarecorder/tst_qmediarecorder.cpp4
12 files changed, 53 insertions, 81 deletions
diff --git a/src/imports/multimedia/qdeclarativecamera.cpp b/src/imports/multimedia/qdeclarativecamera.cpp
index 949db70fd..d334f5122 100644
--- a/src/imports/multimedia/qdeclarativecamera.cpp
+++ b/src/imports/multimedia/qdeclarativecamera.cpp
@@ -390,25 +390,13 @@ QString QDeclarativeCamera::errorString() const
}
/*!
- \qmlproperty enumeration QtMultimedia::Camera::availability
-
- This property holds the availability state of the camera.
-
- \value Camera.Available
- The camera is available for use.
- \value Camera.Busy
- The camera is busy at the moment as it is being used by another
- process.
- \value Camera.Unavailable
- The camera is not available for use (there may be no camera
- hardware).
- \value Camera.ResourceMissing
- The camera cannot be used because of missing resources.
- It may be possible to try again at a later time.
+ \qmlproperty enumeration QtMultimedia::Camera::isAvailable
+
+ This property returns the availability of the camera.
*/
-QDeclarativeCamera::Availability QDeclarativeCamera::availability() const
+bool QDeclarativeCamera::isAvailable() const
{
- return Availability(m_camera->availability());
+ return m_camera->isAvailable();
}
/*!
diff --git a/src/imports/multimedia/qdeclarativecamera_p.h b/src/imports/multimedia/qdeclarativecamera_p.h
index 7a13d6fc6..0a57e708b 100644
--- a/src/imports/multimedia/qdeclarativecamera_p.h
+++ b/src/imports/multimedia/qdeclarativecamera_p.h
@@ -110,7 +110,6 @@ class QDeclarativeCamera : public QObject, public QQmlParserStatus
Q_ENUMS(FocusMode)
Q_ENUMS(FocusPointMode)
Q_ENUMS(FocusAreaStatus)
- Q_ENUMS(Availability)
public:
enum Position {
@@ -205,13 +204,6 @@ public:
FocusAreaFocused = QCameraFocusZone::Focused
};
- enum Availability {
- Available = QMultimedia::Available,
- Busy = QMultimedia::Busy,
- Unavailable = QMultimedia::ServiceMissing,
- ResourceMissing = QMultimedia::ResourceError
- };
-
QDeclarativeCamera(QObject *parent = 0);
~QDeclarativeCamera();
@@ -245,7 +237,7 @@ public:
qreal zoomFactor() const;
- Availability availability() const;
+ bool isAvailable() const;
public Q_SLOTS:
void start();
diff --git a/src/imports/multimedia/qdeclarativetorch.cpp b/src/imports/multimedia/qdeclarativetorch.cpp
index 28b86eb07..fa634cfcf 100644
--- a/src/imports/multimedia/qdeclarativetorch.cpp
+++ b/src/imports/multimedia/qdeclarativetorch.cpp
@@ -39,6 +39,7 @@
#include <QDebug>
#include <QMediaService>
+#include <private/qmediaplatformcaptureinterface_p.h>
#include "qdeclarativetorch_p.h"
@@ -70,7 +71,7 @@ QDeclarativeTorch::QDeclarativeTorch(QObject *parent)
: QObject(parent)
{
m_camera = new QCamera(this);
- QMediaService *service = m_camera->service();
+ auto *service = m_camera->captureInterface();
m_exposure = service ? service->requestControl<QCameraExposureControl*>() : 0;
diff --git a/src/multimedia/camera/qcamera.cpp b/src/multimedia/camera/qcamera.cpp
index 5ecc9018c..a1928bfb2 100644
--- a/src/multimedia/camera/qcamera.cpp
+++ b/src/multimedia/camera/qcamera.cpp
@@ -153,8 +153,9 @@ void QCameraPrivate::initControls()
{
Q_Q(QCamera);
- if (service) {
- control = qobject_cast<QCameraControl *>(service->requestControl(QCameraControl_iid));
+ captureInterface = QMediaPlatformIntegration::instance()->createCaptureInterface(QMediaRecorder::AudioAndVideo);
+ if (captureInterface) {
+ control = qobject_cast<QCameraControl *>(captureInterface->requestControl(QCameraControl_iid));
if (control) {
q->connect(control, SIGNAL(stateChanged(QCamera::State)), q, SLOT(_q_updateState(QCamera::State)));
@@ -167,7 +168,7 @@ void QCameraPrivate::initControls()
control = nullptr;
error = QCamera::CameraError;
- errorString = QCamera::tr("The camera service is missing");
+ errorString = QCamera::tr("The camera captureInterface is missing");
}
}
@@ -177,16 +178,16 @@ void QCameraPrivate::clear()
delete cameraFocus;
delete imageProcessing;
- if (service) {
+ if (captureInterface) {
if (control)
- service->releaseControl(control);
+ captureInterface->releaseControl(control);
}
cameraExposure = nullptr;
cameraFocus = nullptr;
imageProcessing = nullptr;
control = nullptr;
- service = nullptr;
+ captureInterface = nullptr;
}
/*!
@@ -207,8 +208,7 @@ QCamera::QCamera(QObject *parent)
*/
QCamera::QCamera(const QCameraInfo &cameraInfo, QObject *parent)
- : QMediaSource(*new QCameraPrivate, parent,
- QMediaPlatformIntegration::instance()->createCaptureInterface(QMediaRecorder::AudioAndVideo))
+ : QObject(*new QCameraPrivate, parent)
{
Q_D(QCamera);
d->init();
@@ -228,9 +228,7 @@ QCamera::QCamera(const QCameraInfo &cameraInfo, QObject *parent)
*/
QCamera::QCamera(QCameraInfo::Position position, QObject *parent)
- : QMediaSource(*new QCameraPrivate,
- parent,
- QMediaPlatformIntegration::instance()->createCaptureInterface(QMediaRecorder::AudioAndVideo))
+ : QObject(*new QCameraPrivate, parent)
{
Q_D(QCamera);
@@ -259,19 +257,10 @@ QCamera::~QCamera()
/*!
Returns the availability state of the camera service.
*/
-QMultimedia::AvailabilityStatus QCamera::availability() const
+bool QCamera::isAvailable() const
{
Q_D(const QCamera);
- if (d->control == nullptr)
- return QMultimedia::ServiceMissing;
-
- if (d->cameraInfo.isNull())
- return QMultimedia::ResourceError;
-
- if (d->error != QCamera::NoError)
- return QMultimedia::ResourceError;
-
- return QMediaSource::availability();
+ return (d->control != nullptr);
}
@@ -345,6 +334,14 @@ QString QCamera::errorString() const
}
/*!
+ \internal
+ */
+QMediaPlatformCaptureInterface *QCamera::captureInterface() const
+{
+ return d_func()->captureInterface;
+}
+
+/*!
Starts the camera.
State is changed to QCamera::ActiveState if camera is started
diff --git a/src/multimedia/camera/qcamera.h b/src/multimedia/camera/qcamera.h
index 4d909e9bb..8946aabf3 100644
--- a/src/multimedia/camera/qcamera.h
+++ b/src/multimedia/camera/qcamera.h
@@ -60,9 +60,10 @@ QT_BEGIN_NAMESPACE
class QAbstractVideoSurface;
class QCameraInfo;
+class QMediaPlatformCaptureInterface;
class QCameraPrivate;
-class Q_MULTIMEDIA_EXPORT QCamera : public QMediaSource
+class Q_MULTIMEDIA_EXPORT QCamera : public QObject
{
Q_OBJECT
Q_PROPERTY(QCamera::State state READ state NOTIFY stateChanged)
@@ -102,7 +103,7 @@ public:
explicit QCamera(QCameraInfo::Position position, QObject *parent = nullptr);
~QCamera();
- QMultimedia::AvailabilityStatus availability() const override;
+ bool isAvailable() const;
State state() const;
Status status() const;
@@ -120,6 +121,7 @@ public:
Error error() const;
QString errorString() const;
+ QMediaPlatformCaptureInterface *captureInterface() const;
public Q_SLOTS:
void load();
void unload();
diff --git a/src/multimedia/camera/qcamera_p.h b/src/multimedia/camera/qcamera_p.h
index 946fc3ccc..fc80540b4 100644
--- a/src/multimedia/camera/qcamera_p.h
+++ b/src/multimedia/camera/qcamera_p.h
@@ -58,19 +58,14 @@
QT_BEGIN_NAMESPACE
class QCameraControl;
+class QMediaPlatformCaptureInterface;
-class QCameraPrivate : public QMediaSourcePrivate
+class QCameraPrivate : public QObjectPrivate
{
Q_DECLARE_NON_CONST_PUBLIC(QCamera)
public:
QCameraPrivate()
- : QMediaSourcePrivate(),
- control(nullptr),
- cameraExposure(nullptr),
- cameraFocus(nullptr),
- imageProcessing(nullptr),
- viewfinder(nullptr),
- capture(nullptr),
+ : QObjectPrivate(),
state(QCamera::UnloadedState),
error(QCamera::NoError),
supressLockChangedSignal(false),
@@ -83,14 +78,15 @@ public:
void clear();
- QCameraControl *control;
+ QMediaPlatformCaptureInterface *captureInterface = nullptr;
+ QCameraControl *control = nullptr;
- QCameraExposure *cameraExposure;
- QCameraFocus *cameraFocus;
- QCameraImageProcessing *imageProcessing;
+ QCameraExposure *cameraExposure = nullptr;
+ QCameraFocus *cameraFocus = nullptr;
+ QCameraImageProcessing *imageProcessing = nullptr;
- QMediaSink *viewfinder;
- QObject *capture;
+ QMediaSink *viewfinder = nullptr;
+ QObject *capture = nullptr;
QCamera::State state;
diff --git a/src/multimedia/camera/qcameraexposure.cpp b/src/multimedia/camera/qcameraexposure.cpp
index 9acaf7d3a..0c8668c60 100644
--- a/src/multimedia/camera/qcameraexposure.cpp
+++ b/src/multimedia/camera/qcameraexposure.cpp
@@ -190,9 +190,6 @@ QCameraExposure::QCameraExposure(QCamera *parent, QCameraControl *cameraControl)
QCameraExposure::~QCameraExposure()
{
Q_D(QCameraExposure);
- if (d->exposureControl)
- d->camera->service()->releaseControl(d->exposureControl);
-
delete d;
}
diff --git a/src/multimedia/camera/qcameraimagecapture.cpp b/src/multimedia/camera/qcameraimagecapture.cpp
index d67630bcd..6f1d610f5 100644
--- a/src/multimedia/camera/qcameraimagecapture.cpp
+++ b/src/multimedia/camera/qcameraimagecapture.cpp
@@ -40,6 +40,7 @@
#include <qcameraimagecapturecontrol.h>
#include <qmediaencodersettings.h>
#include <qmediametadata.h>
+#include <private/qmediaplatformcaptureinterface_p.h>
#include "qmediasource_p.h"
#include <qmediaservice.h>
@@ -137,7 +138,7 @@ QCameraImageCapture::QCameraImageCapture(QCamera *camera)
d->q_ptr = this;
d->camera = camera;
- QMediaService *service = camera->service();
+ QMediaPlatformCaptureInterface *service = camera->captureInterface();
if (service) {
d->control = qobject_cast<QCameraImageCaptureControl*>(service->requestControl(QCameraImageCaptureControl_iid));
diff --git a/src/multimedia/recording/qmediarecorder.cpp b/src/multimedia/recording/qmediarecorder.cpp
index 777e2ba9b..6097752df 100644
--- a/src/multimedia/recording/qmediarecorder.cpp
+++ b/src/multimedia/recording/qmediarecorder.cpp
@@ -278,7 +278,7 @@ bool QMediaRecorder::setCamera(QCamera *object)
d->camera = object;
- QMediaService *service = d->camera->service();
+ auto *service = d->camera->captureInterface();
Q_ASSERT(service);
d->notifyTimer->setInterval(notifyInterval());
diff --git a/tests/auto/unit/multimedia/qcamera/tst_qcamera.cpp b/tests/auto/unit/multimedia/qcamera/tst_qcamera.cpp
index dd5cb9f5c..4f7cfc705 100644
--- a/tests/auto/unit/multimedia/qcamera/tst_qcamera.cpp
+++ b/tests/auto/unit/multimedia/qcamera/tst_qcamera.cpp
@@ -807,21 +807,21 @@ void tst_QCamera::testConstructor()
{
QCamera camera;
- QCOMPARE(camera.availability(), QMultimedia::Available);
+ QCOMPARE(camera.isAvailable(), true);
QCOMPARE(camera.error(), QCamera::NoError);
QCOMPARE(camera.cameraInfo(), defaultCamera);
}
{
QCamera camera(QCameraInfo::FrontFace);
- QCOMPARE(camera.availability(), QMultimedia::Available);
+ QCOMPARE(camera.isAvailable(), true);
QCOMPARE(camera.error(), QCamera::NoError);
QCOMPARE(camera.cameraInfo(), frontCamera);
}
{
QCamera camera(QMediaDeviceManager::defaultVideoInput());
- QCOMPARE(camera.availability(), QMultimedia::Available);
+ QCOMPARE(camera.isAvailable(), true);
QCOMPARE(camera.error(), QCamera::NoError);
QCOMPARE(camera.cameraInfo(), defaultCamera);
}
@@ -829,14 +829,14 @@ void tst_QCamera::testConstructor()
{
QCameraInfo cameraInfo = QMediaDeviceManager::videoInputs().at(0);
QCamera camera(cameraInfo);
- QCOMPARE(camera.availability(), QMultimedia::Available);
+ QCOMPARE(camera.isAvailable(), true);
QCOMPARE(camera.error(), QCamera::NoError);
QCOMPARE(camera.cameraInfo(), cameraInfo);
}
{
QCamera camera(QCameraInfo::BackFace);
- QCOMPARE(camera.availability(), QMultimedia::Available);
+ QCOMPARE(camera.isAvailable(), true);
QCOMPARE(camera.error(), QCamera::NoError);
QCOMPARE(camera.cameraInfo(), backCamera);
}
@@ -844,7 +844,7 @@ void tst_QCamera::testConstructor()
{
// Should load the default camera when UnspecifiedPosition is requested
QCamera camera(QCameraInfo::UnspecifiedPosition);
- QCOMPARE(camera.availability(), QMultimedia::Available);
+ QCOMPARE(camera.isAvailable(), true);
QCOMPARE(camera.error(), QCamera::NoError);
QCOMPARE(camera.cameraInfo(), defaultCamera);
}
@@ -855,7 +855,6 @@ void tst_QCamera::testQCameraIsAvailable()
{
QCamera camera;
QVERIFY(camera.isAvailable());
- QVERIFY(camera.availability() == QMultimedia::Available);
}
void tst_QCamera::testQCameraIsNotAvailable()
@@ -865,7 +864,6 @@ void tst_QCamera::testQCameraIsNotAvailable()
QCOMPARE(camera.error(), QCamera::CameraError);
QVERIFY(!camera.isAvailable());
- QCOMPARE(camera.availability(), QMultimedia::ServiceMissing);
integration->setFlags({});
}
diff --git a/tests/auto/unit/multimedia/qcameraimagecapture/tst_qcameraimagecapture.cpp b/tests/auto/unit/multimedia/qcameraimagecapture/tst_qcameraimagecapture.cpp
index 416885d23..dfae2c5d4 100644
--- a/tests/auto/unit/multimedia/qcameraimagecapture/tst_qcameraimagecapture.cpp
+++ b/tests/auto/unit/multimedia/qcameraimagecapture/tst_qcameraimagecapture.cpp
@@ -144,7 +144,7 @@ void tst_QCameraImageCapture::mediaSource()
QCamera camera1;
QCameraImageCapture imageCapture1(&camera1);
- QMediaSource *medobj1 = imageCapture1.camera();
+ auto *medobj1 = imageCapture1.camera();
QCOMPARE(medobj1, &camera1);
}
diff --git a/tests/auto/unit/multimedia/qmediarecorder/tst_qmediarecorder.cpp b/tests/auto/unit/multimedia/qmediarecorder/tst_qmediarecorder.cpp
index f38d1968e..48b14bd4a 100644
--- a/tests/auto/unit/multimedia/qmediarecorder/tst_qmediarecorder.cpp
+++ b/tests/auto/unit/multimedia/qmediarecorder/tst_qmediarecorder.cpp
@@ -730,7 +730,7 @@ void tst_QMediaRecorder::metaData()
QCamera object;
QMediaRecorder recorder(&object);
- QVERIFY(object.metaData().isEmpty());
+ QVERIFY(recorder.metaData().isEmpty());
QMediaMetaData data;
data.insert(QMediaMetaData::Author, QString::fromUtf8("John Doe"));
@@ -922,7 +922,7 @@ void tst_QMediaRecorder::testMediaSource()
QCamera *medobj = recorder.camera();
QVERIFY(medobj == nullptr);
- QMediaSource *medobj1 = capture->camera();
+ auto *medobj1 = capture->camera();
QVERIFY(medobj1 != nullptr);
}