summaryrefslogtreecommitdiffstats
path: root/src/multimedia/camera
diff options
context:
space:
mode:
Diffstat (limited to 'src/multimedia/camera')
-rw-r--r--src/multimedia/camera/qcamera.cpp6
-rw-r--r--src/multimedia/camera/qcameraexposure.cpp39
-rw-r--r--src/multimedia/camera/qcameraexposure.h6
-rw-r--r--src/multimedia/camera/qcamerafocus.cpp85
-rw-r--r--src/multimedia/camera/qcamerafocus.h3
-rw-r--r--src/multimedia/camera/qcameraimageprocessing.cpp134
-rw-r--r--src/multimedia/camera/qcameraimageprocessing.h6
7 files changed, 132 insertions, 147 deletions
diff --git a/src/multimedia/camera/qcamera.cpp b/src/multimedia/camera/qcamera.cpp
index a418704e5..7276f9fdd 100644
--- a/src/multimedia/camera/qcamera.cpp
+++ b/src/multimedia/camera/qcamera.cpp
@@ -157,9 +157,9 @@ void QCameraPrivate::init()
{
Q_Q(QCamera);
initControls();
- cameraExposure = new QCameraExposure(q);
- cameraFocus = new QCameraFocus(q);
- imageProcessing = new QCameraImageProcessing(q);
+ cameraExposure = new QCameraExposure(q, control);
+ cameraFocus = new QCameraFocus(q, control);
+ imageProcessing = new QCameraImageProcessing(q, control);
}
void QCameraPrivate::initControls()
diff --git a/src/multimedia/camera/qcameraexposure.cpp b/src/multimedia/camera/qcameraexposure.cpp
index 693f2bb55..9acaf7d3a 100644
--- a/src/multimedia/camera/qcameraexposure.cpp
+++ b/src/multimedia/camera/qcameraexposure.cpp
@@ -42,6 +42,7 @@
#include <qcamera.h>
#include <qcameraexposurecontrol.h>
+#include <qcameracontrol.h>
#include <QtCore/QMetaObject>
#include <QtCore/QDebug>
@@ -62,20 +63,12 @@ QT_BEGIN_NAMESPACE
//#define DEBUG_EXPOSURE_CHANGES 1
-static void qRegisterCameraExposureMetaTypes()
-{
- qRegisterMetaType<QCameraExposure::ExposureMode>("QCameraExposure::ExposureMode");
- qRegisterMetaType<QCameraExposure::FlashModes>("QCameraExposure::FlashModes");
-}
-
-Q_CONSTRUCTOR_FUNCTION(qRegisterCameraExposureMetaTypes)
-
class QCameraExposurePrivate
{
Q_DECLARE_NON_CONST_PUBLIC(QCameraExposure)
public:
- void initControls();
+ void init(QCameraControl *cameraControl);
QCameraExposure *q_ptr;
template<typename T> T actualExposureParameter(QCameraExposureControl::ExposureParameter parameter, const T &defaultValue) const;
@@ -90,22 +83,20 @@ public:
void _q_exposureParameterRangeChanged(int parameter);
};
-void QCameraExposurePrivate::initControls()
+void QCameraExposurePrivate::init(QCameraControl *cameraControl)
{
Q_Q(QCameraExposure);
- QMediaService *service = camera->service();
- exposureControl = nullptr;
- if (service) {
- exposureControl = qobject_cast<QCameraExposureControl *>(service->requestControl(QCameraExposureControl_iid));
- }
- if (exposureControl) {
- q->connect(exposureControl, SIGNAL(actualValueChanged(int)),
- q, SLOT(_q_exposureParameterChanged(int)));
- q->connect(exposureControl, SIGNAL(parameterRangeChanged(int)),
- q, SLOT(_q_exposureParameterRangeChanged(int)));
- q->connect(exposureControl, SIGNAL(flashReady(bool)), q, SIGNAL(flashReady(bool)));
- }
+ exposureControl = cameraControl->exposureControl();
+
+ if (!exposureControl)
+ return;
+
+ q->connect(exposureControl, SIGNAL(actualValueChanged(int)),
+ q, SLOT(_q_exposureParameterChanged(int)));
+ q->connect(exposureControl, SIGNAL(parameterRangeChanged(int)),
+ q, SLOT(_q_exposureParameterRangeChanged(int)));
+ q->connect(exposureControl, SIGNAL(flashReady(bool)), q, SIGNAL(flashReady(bool)));
}
template<typename T>
@@ -182,13 +173,13 @@ void QCameraExposurePrivate::_q_exposureParameterRangeChanged(int parameter)
Construct a QCameraExposure from service \a provider and \a parent.
*/
-QCameraExposure::QCameraExposure(QCamera *parent):
+QCameraExposure::QCameraExposure(QCamera *parent, QCameraControl *cameraControl):
QObject(parent), d_ptr(new QCameraExposurePrivate)
{
Q_D(QCameraExposure);
d->camera = parent;
d->q_ptr = this;
- d->initControls();
+ d->init(cameraControl);
}
diff --git a/src/multimedia/camera/qcameraexposure.h b/src/multimedia/camera/qcameraexposure.h
index 78be56e21..d6550c6e3 100644
--- a/src/multimedia/camera/qcameraexposure.h
+++ b/src/multimedia/camera/qcameraexposure.h
@@ -47,6 +47,7 @@ QT_BEGIN_NAMESPACE
class QCamera;
+class QCameraControl;
class QCameraExposurePrivate;
class Q_MULTIMEDIA_EXPORT QCameraExposure : public QObject
@@ -156,7 +157,7 @@ protected:
private:
friend class QCamera;
friend class QCameraPrivate;
- explicit QCameraExposure(QCamera *parent = nullptr);
+ explicit QCameraExposure(QCamera *parent, QCameraControl *cameraControl);
Q_DISABLE_COPY(QCameraExposure)
Q_DECLARE_PRIVATE(QCameraExposure)
@@ -169,9 +170,6 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QCameraExposure::FlashModes)
QT_END_NAMESPACE
-Q_DECLARE_METATYPE(QCameraExposure::ExposureMode)
-Q_DECLARE_METATYPE(QCameraExposure::FlashModes)
-
Q_MEDIA_ENUM_DEBUG(QCameraExposure, ExposureMode)
Q_MEDIA_ENUM_DEBUG(QCameraExposure, FlashMode)
diff --git a/src/multimedia/camera/qcamerafocus.cpp b/src/multimedia/camera/qcamerafocus.cpp
index 7fa30a859..7c07669f6 100644
--- a/src/multimedia/camera/qcamerafocus.cpp
+++ b/src/multimedia/camera/qcamerafocus.cpp
@@ -50,33 +50,6 @@
QT_BEGIN_NAMESPACE
-class QCameraFocusFakeFocusControl : public QCameraFocusControl
-{
-public:
- QCameraFocusFakeFocusControl(QObject *parent) :
- QCameraFocusControl(parent) {}
-
- [[nodiscard]] QCameraFocus::FocusModes focusMode() const override { return QCameraFocus::AutoFocus; }
- void setFocusMode(QCameraFocus::FocusModes) override { qWarning("Focus mode selection is not supported"); }
- [[nodiscard]] bool isFocusModeSupported(QCameraFocus::FocusModes) const override { return false; }
-
- [[nodiscard]] QCameraFocus::FocusPointMode focusPointMode() const override { return QCameraFocus::FocusPointAuto; }
- void setFocusPointMode(QCameraFocus::FocusPointMode) override { qWarning("Focus points mode selection is not supported"); }
- [[nodiscard]] bool isFocusPointModeSupported(QCameraFocus::FocusPointMode) const override { return false; }
- [[nodiscard]] QPointF customFocusPoint() const override { return QPointF(0.5,0.5); }
- void setCustomFocusPoint(const QPointF &) override { qWarning("Focus points selection is not supported"); }
-
- [[nodiscard]] QCameraFocusZoneList focusZones() const override { return QCameraFocusZoneList(); }
-
- ZoomRange zoomFactorRange() const override { return {1., 1.}; };
- void zoomTo(float, float) override
- {
- qWarning("The camera doesn't support zooming.");
- }
-};
-
-
-
class QCameraFocusZoneData : public QSharedData
{
public:
@@ -279,7 +252,7 @@ class QCameraFocusPrivate : public QMediaSourcePrivate
{
Q_DECLARE_NON_CONST_PUBLIC(QCameraFocus)
public:
- void initControls();
+ void init(QCameraControl *cameraControl);
QCamera *camera;
@@ -289,21 +262,15 @@ public:
};
-void QCameraFocusPrivate::initControls()
+void QCameraFocusPrivate::init(QCameraControl *cameraControl)
{
Q_Q(QCameraFocus);
- focusControl = nullptr;
-
- QMediaService *service = camera->service();
- if (service) {
- focusControl = qobject_cast<QCameraFocusControl *>(service->requestControl(QCameraFocusControl_iid));
- }
-
+ focusControl = cameraControl->focusControl();
available = focusControl != nullptr;
if (!focusControl)
- focusControl = new QCameraFocusFakeFocusControl(q);
+ return;
q->connect(focusControl, SIGNAL(focusZonesChanged()), q, SIGNAL(focusZonesChanged()));
@@ -322,12 +289,12 @@ void QCameraFocusPrivate::initControls()
Construct a QCameraFocus for \a camera.
*/
-QCameraFocus::QCameraFocus(QCamera *camera)
+QCameraFocus::QCameraFocus(QCamera *camera, QCameraControl *cameraControl)
: QObject(*new QCameraFocusPrivate, camera)
{
Q_D(QCameraFocus);
d->camera = camera;
- d->initControls();
+ d->init(cameraControl);
}
@@ -361,12 +328,15 @@ bool QCameraFocus::isAvailable() const
QCameraFocus::FocusModes QCameraFocus::focusMode() const
{
- return d_func()->focusControl->focusMode();
+ Q_D(const QCameraFocus);
+ return d->focusControl ? d->focusControl->focusMode() : QCameraFocus::AutoFocus;
}
void QCameraFocus::setFocusMode(QCameraFocus::FocusModes mode)
{
- d_func()->focusControl->setFocusMode(mode);
+ Q_D(QCameraFocus);
+ if (d->focusControl)
+ d->focusControl->setFocusMode(mode);
}
/*!
@@ -375,7 +345,8 @@ void QCameraFocus::setFocusMode(QCameraFocus::FocusModes mode)
bool QCameraFocus::isFocusModeSupported(FocusModes mode) const
{
- return d_func()->focusControl->isFocusModeSupported(mode);
+ Q_D(const QCameraFocus);
+ return d->focusControl ? d->focusControl->isFocusModeSupported(mode) : false;
}
/*!
@@ -391,12 +362,15 @@ bool QCameraFocus::isFocusModeSupported(FocusModes mode) const
QCameraFocus::FocusPointMode QCameraFocus::focusPointMode() const
{
- return d_func()->focusControl->focusPointMode();
+ Q_D(const QCameraFocus);
+ return d->focusControl ? d->focusControl->focusPointMode() : QCameraFocus::FocusPointAuto;
}
void QCameraFocus::setFocusPointMode(QCameraFocus::FocusPointMode mode)
{
- d_func()->focusControl->setFocusPointMode(mode);
+ Q_D(QCameraFocus);
+ if (d->focusControl)
+ d->focusControl->setFocusPointMode(mode);
}
/*!
@@ -404,7 +378,8 @@ void QCameraFocus::setFocusPointMode(QCameraFocus::FocusPointMode mode)
*/
bool QCameraFocus::isFocusPointModeSupported(QCameraFocus::FocusPointMode mode) const
{
- return d_func()->focusControl->isFocusPointModeSupported(mode);
+ Q_D(const QCameraFocus);
+ return d->focusControl ? d->focusControl->isFocusPointModeSupported(mode) : false;
}
/*!
@@ -418,12 +393,15 @@ bool QCameraFocus::isFocusPointModeSupported(QCameraFocus::FocusPointMode mode)
QPointF QCameraFocus::customFocusPoint() const
{
- return d_func()->focusControl->customFocusPoint();
+ Q_D(const QCameraFocus);
+ return d->focusControl ? d->focusControl->customFocusPoint() : QPointF(0.5,0.5);
}
void QCameraFocus::setCustomFocusPoint(const QPointF &point)
{
- d_func()->focusControl->setCustomFocusPoint(point);
+ Q_D(QCameraFocus);
+ if (d->focusControl)
+ d->focusControl->setCustomFocusPoint(point);
}
/*!
@@ -439,7 +417,8 @@ void QCameraFocus::setCustomFocusPoint(const QPointF &point)
*/
QCameraFocusZoneList QCameraFocus::focusZones() const
{
- return d_func()->focusControl->focusZones();
+ Q_D(const QCameraFocus);
+ return d->focusControl ? d->focusControl->focusZones() : QCameraFocusZoneList();
}
/*!
@@ -450,7 +429,8 @@ QCameraFocusZoneList QCameraFocus::focusZones() const
float QCameraFocus::maximumZoomFactor() const
{
- return d_func()->focusControl->zoomFactorRange().max;
+ Q_D(const QCameraFocus);
+ return d->focusControl ? d->focusControl->zoomFactorRange().max : 1.;
}
/*!
@@ -461,7 +441,8 @@ float QCameraFocus::maximumZoomFactor() const
float QCameraFocus::minimumZoomFactor() const
{
- return d_func()->focusControl->zoomFactorRange().min;
+ Q_D(const QCameraFocus);
+ return d->focusControl ? d->focusControl->zoomFactorRange().min : 1.;
}
/*!
@@ -476,6 +457,7 @@ float QCameraFocus::zoomFactor() const
void QCameraFocus::setZoomFactor(float factor)
{
Q_D(QCameraFocus);
+ factor = qBound(minimumZoomFactor(), factor, maximumZoomFactor());
d->zoomFactor = factor;
d->focusControl->zoomTo(factor, -1);
}
@@ -488,7 +470,10 @@ void QCameraFocus::setZoomFactor(float factor)
*/
void QCameraFocus::zoomTo(float factor, float rate)
{
+ Q_ASSERT(rate > 0);
+
Q_D(QCameraFocus);
+ factor = qBound(minimumZoomFactor(), factor, maximumZoomFactor());
d->zoomFactor = factor;
d->focusControl->zoomTo(factor, rate);
}
diff --git a/src/multimedia/camera/qcamerafocus.h b/src/multimedia/camera/qcamerafocus.h
index 1b8d69628..ecdb7b623 100644
--- a/src/multimedia/camera/qcamerafocus.h
+++ b/src/multimedia/camera/qcamerafocus.h
@@ -54,6 +54,7 @@ QT_BEGIN_NAMESPACE
class QCamera;
+class QCameraControl;
class QCameraFocusZoneData;
@@ -152,7 +153,7 @@ protected:
private:
friend class QCamera;
friend class QCameraPrivate;
- QCameraFocus(QCamera *camera);
+ QCameraFocus(QCamera *camera, QCameraControl *cameraControl);
Q_DISABLE_COPY(QCameraFocus)
Q_DECLARE_PRIVATE(QCameraFocus)
diff --git a/src/multimedia/camera/qcameraimageprocessing.cpp b/src/multimedia/camera/qcameraimageprocessing.cpp
index e7e53d491..502bcf07a 100644
--- a/src/multimedia/camera/qcameraimageprocessing.cpp
+++ b/src/multimedia/camera/qcameraimageprocessing.cpp
@@ -41,23 +41,12 @@
#include "qmediasource_p.h"
#include <qcameracontrol.h>
-#include <qcameraexposurecontrol.h>
-#include <qcamerafocuscontrol.h>
#include <qcameraimageprocessingcontrol.h>
#include <QtCore/QDebug>
QT_BEGIN_NAMESPACE
-static void qRegisterCameraImageProcessingMetaTypes()
- {
- qRegisterMetaType<QCameraImageProcessing::WhiteBalanceMode>();
- qRegisterMetaType<QCameraImageProcessing::ColorFilter>();
- }
-
-Q_CONSTRUCTOR_FUNCTION(qRegisterCameraImageProcessingMetaTypes)
-
-
/*!
\class QCameraImageProcessing
@@ -92,55 +81,31 @@ Q_CONSTRUCTOR_FUNCTION(qRegisterCameraImageProcessingMetaTypes)
\sa QCameraImageProcessingControl
*/
-class QCameraImageProcessingFakeControl : public QCameraImageProcessingControl {
-public:
- QCameraImageProcessingFakeControl(QObject *parent) :
- QCameraImageProcessingControl(parent)
- {}
-
- [[nodiscard]] bool isParameterSupported(ProcessingParameter) const override { return false; }
- [[nodiscard]] bool isParameterValueSupported(ProcessingParameter, const QVariant &) const override { return false; }
- [[nodiscard]] QVariant parameter(ProcessingParameter) const override { return QVariant(); }
- void setParameter(ProcessingParameter, const QVariant &) override {}
-};
-
-
class QCameraImageProcessingPrivate : public QMediaSourcePrivate
{
- Q_DECLARE_NON_CONST_PUBLIC(QCameraImageProcessing)
public:
- void initControls();
+ void init(QCameraControl *cameraControl);
QCamera *camera;
QCameraImageProcessingControl *imageControl;
- bool available;
};
-void QCameraImageProcessingPrivate::initControls()
+void QCameraImageProcessingPrivate::init(QCameraControl *cameraControl)
{
- imageControl = nullptr;
-
- QMediaService *service = camera->service();
- if (service)
- imageControl = qobject_cast<QCameraImageProcessingControl *>(service->requestControl(QCameraImageProcessingControl_iid));
-
- available = (imageControl != nullptr);
-
- if (!imageControl)
- imageControl = new QCameraImageProcessingFakeControl(q_ptr);
+ imageControl = cameraControl->imageProcessingControl();
}
/*!
Construct a QCameraImageProcessing for \a camera.
*/
-QCameraImageProcessing::QCameraImageProcessing(QCamera *camera)
+QCameraImageProcessing::QCameraImageProcessing(QCamera *camera, QCameraControl *cameraControl)
: QObject(*new QCameraImageProcessingPrivate, camera)
{
Q_D(QCameraImageProcessing);
d->camera = camera;
- d->initControls();
+ d->init(cameraControl);
}
@@ -158,7 +123,7 @@ QCameraImageProcessing::~QCameraImageProcessing()
*/
bool QCameraImageProcessing::isAvailable() const
{
- return d_func()->available;
+ return d_func()->imageControl;
}
@@ -168,7 +133,10 @@ bool QCameraImageProcessing::isAvailable() const
QCameraImageProcessing::WhiteBalanceMode QCameraImageProcessing::whiteBalanceMode() const
{
- return d_func()->imageControl->parameter(QCameraImageProcessingControl::WhiteBalancePreset)
+ Q_D(const QCameraImageProcessing);
+ if (!d->imageControl)
+ return WhiteBalanceAuto;
+ return d->imageControl->parameter(QCameraImageProcessingControl::WhiteBalancePreset)
.value<QCameraImageProcessing::WhiteBalanceMode>();
}
@@ -178,7 +146,9 @@ QCameraImageProcessing::WhiteBalanceMode QCameraImageProcessing::whiteBalanceMod
void QCameraImageProcessing::setWhiteBalanceMode(QCameraImageProcessing::WhiteBalanceMode mode)
{
- d_func()->imageControl->setParameter(
+ Q_D(QCameraImageProcessing);
+ if (d->imageControl)
+ d->imageControl->setParameter(
QCameraImageProcessingControl::WhiteBalancePreset,
QVariant::fromValue<QCameraImageProcessing::WhiteBalanceMode>(mode));
}
@@ -189,7 +159,10 @@ void QCameraImageProcessing::setWhiteBalanceMode(QCameraImageProcessing::WhiteBa
bool QCameraImageProcessing::isWhiteBalanceModeSupported(QCameraImageProcessing::WhiteBalanceMode mode) const
{
- return d_func()->imageControl->isParameterValueSupported(
+ Q_D(const QCameraImageProcessing);
+ if (!d->imageControl)
+ return false;
+ return d->imageControl->isParameterValueSupported(
QCameraImageProcessingControl::WhiteBalancePreset,
QVariant::fromValue<QCameraImageProcessing::WhiteBalanceMode>(mode));
@@ -203,7 +176,11 @@ bool QCameraImageProcessing::isWhiteBalanceModeSupported(QCameraImageProcessing:
qreal QCameraImageProcessing::manualWhiteBalance() const
{
- return d_func()->imageControl->parameter(QCameraImageProcessingControl::ColorTemperature).toReal();
+ Q_D(const QCameraImageProcessing);
+ if (!d->imageControl)
+ return 0.;
+
+ return d->imageControl->parameter(QCameraImageProcessingControl::ColorTemperature).toReal();
}
/*!
@@ -213,7 +190,9 @@ qreal QCameraImageProcessing::manualWhiteBalance() const
void QCameraImageProcessing::setManualWhiteBalance(qreal colorTemperature)
{
- d_func()->imageControl->setParameter(
+ Q_D(QCameraImageProcessing);
+ if (d->imageControl)
+ d->imageControl->setParameter(
QCameraImageProcessingControl::ColorTemperature,
QVariant(colorTemperature));
}
@@ -223,7 +202,10 @@ void QCameraImageProcessing::setManualWhiteBalance(qreal colorTemperature)
*/
qreal QCameraImageProcessing::brightness() const
{
- return d_func()->imageControl->parameter(QCameraImageProcessingControl::BrightnessAdjustment).toReal();
+ Q_D(const QCameraImageProcessing);
+ if (!d->imageControl)
+ return 0.;
+ return d->imageControl->parameter(QCameraImageProcessingControl::BrightnessAdjustment).toReal();
}
/*!
@@ -233,7 +215,9 @@ qreal QCameraImageProcessing::brightness() const
*/
void QCameraImageProcessing::setBrightness(qreal value)
{
- d_func()->imageControl->setParameter(QCameraImageProcessingControl::BrightnessAdjustment,
+ Q_D(QCameraImageProcessing);
+ if (d->imageControl)
+ d->imageControl->setParameter(QCameraImageProcessingControl::BrightnessAdjustment,
QVariant(value));
}
@@ -242,7 +226,10 @@ void QCameraImageProcessing::setBrightness(qreal value)
*/
qreal QCameraImageProcessing::contrast() const
{
- return d_func()->imageControl->parameter(QCameraImageProcessingControl::ContrastAdjustment).toReal();
+ Q_D(const QCameraImageProcessing);
+ if (!d->imageControl)
+ return 0.;
+ return d->imageControl->parameter(QCameraImageProcessingControl::ContrastAdjustment).toReal();
}
/*!
@@ -252,7 +239,9 @@ qreal QCameraImageProcessing::contrast() const
*/
void QCameraImageProcessing::setContrast(qreal value)
{
- d_func()->imageControl->setParameter(QCameraImageProcessingControl::ContrastAdjustment,
+ Q_D(QCameraImageProcessing);
+ if (d->imageControl)
+ d->imageControl->setParameter(QCameraImageProcessingControl::ContrastAdjustment,
QVariant(value));
}
@@ -261,7 +250,10 @@ void QCameraImageProcessing::setContrast(qreal value)
*/
qreal QCameraImageProcessing::saturation() const
{
- return d_func()->imageControl->parameter(QCameraImageProcessingControl::SaturationAdjustment).toReal();
+ Q_D(const QCameraImageProcessing);
+ if (!d->imageControl)
+ return 0.;
+ return d->imageControl->parameter(QCameraImageProcessingControl::SaturationAdjustment).toReal();
}
/*!
@@ -272,7 +264,9 @@ qreal QCameraImageProcessing::saturation() const
void QCameraImageProcessing::setSaturation(qreal value)
{
- d_func()->imageControl->setParameter(QCameraImageProcessingControl::SaturationAdjustment,
+ Q_D(QCameraImageProcessing);
+ if (d->imageControl)
+ d->imageControl->setParameter(QCameraImageProcessingControl::SaturationAdjustment,
QVariant(value));
}
@@ -281,7 +275,10 @@ void QCameraImageProcessing::setSaturation(qreal value)
*/
qreal QCameraImageProcessing::sharpeningLevel() const
{
- return d_func()->imageControl->parameter(QCameraImageProcessingControl::SharpeningAdjustment).toReal();
+ Q_D(const QCameraImageProcessing);
+ if (!d->imageControl)
+ return 0.;
+ return d->imageControl->parameter(QCameraImageProcessingControl::SharpeningAdjustment).toReal();
}
/*!
@@ -292,7 +289,9 @@ qreal QCameraImageProcessing::sharpeningLevel() const
void QCameraImageProcessing::setSharpeningLevel(qreal level)
{
- d_func()->imageControl->setParameter(QCameraImageProcessingControl::SharpeningAdjustment,
+ Q_D(QCameraImageProcessing);
+ if (d->imageControl)
+ d->imageControl->setParameter(QCameraImageProcessingControl::SharpeningAdjustment,
QVariant(level));
}
@@ -301,7 +300,10 @@ void QCameraImageProcessing::setSharpeningLevel(qreal level)
*/
qreal QCameraImageProcessing::denoisingLevel() const
{
- return d_func()->imageControl->parameter(QCameraImageProcessingControl::DenoisingAdjustment).toReal();
+ Q_D(const QCameraImageProcessing);
+ if (!d->imageControl)
+ return 0.;
+ return d->imageControl->parameter(QCameraImageProcessingControl::DenoisingAdjustment).toReal();
}
/*!
@@ -316,7 +318,9 @@ qreal QCameraImageProcessing::denoisingLevel() const
*/
void QCameraImageProcessing::setDenoisingLevel(qreal level)
{
- d_func()->imageControl->setParameter(QCameraImageProcessingControl::DenoisingAdjustment,
+ Q_D(QCameraImageProcessing);
+ if (d->imageControl)
+ d->imageControl->setParameter(QCameraImageProcessingControl::DenoisingAdjustment,
QVariant(level));
}
@@ -361,7 +365,10 @@ void QCameraImageProcessing::setDenoisingLevel(qreal level)
QCameraImageProcessing::ColorFilter QCameraImageProcessing::colorFilter() const
{
- return d_func()->imageControl->parameter(QCameraImageProcessingControl::ColorFilter)
+ Q_D(const QCameraImageProcessing);
+ if (!d->imageControl)
+ return ColorFilterNone;
+ return d->imageControl->parameter(QCameraImageProcessingControl::ColorFilter)
.value<QCameraImageProcessing::ColorFilter>();
}
@@ -374,9 +381,11 @@ QCameraImageProcessing::ColorFilter QCameraImageProcessing::colorFilter() const
void QCameraImageProcessing::setColorFilter(QCameraImageProcessing::ColorFilter filter)
{
- d_func()->imageControl->setParameter(
- QCameraImageProcessingControl::ColorFilter,
- QVariant::fromValue<QCameraImageProcessing::ColorFilter>(filter));
+ Q_D(QCameraImageProcessing);
+ if (d->imageControl)
+ d->imageControl->setParameter(
+ QCameraImageProcessingControl::ColorFilter,
+ QVariant::fromValue<QCameraImageProcessing::ColorFilter>(filter));
}
/*!
@@ -387,7 +396,10 @@ void QCameraImageProcessing::setColorFilter(QCameraImageProcessing::ColorFilter
bool QCameraImageProcessing::isColorFilterSupported(QCameraImageProcessing::ColorFilter filter) const
{
- return d_func()->imageControl->isParameterValueSupported(
+ Q_D(const QCameraImageProcessing);
+ if (!d->imageControl)
+ return false;
+ return d->imageControl->isParameterValueSupported(
QCameraImageProcessingControl::ColorFilter,
QVariant::fromValue<QCameraImageProcessing::ColorFilter>(filter));
diff --git a/src/multimedia/camera/qcameraimageprocessing.h b/src/multimedia/camera/qcameraimageprocessing.h
index 6f26adf5a..d77e9a694 100644
--- a/src/multimedia/camera/qcameraimageprocessing.h
+++ b/src/multimedia/camera/qcameraimageprocessing.h
@@ -55,6 +55,7 @@ QT_BEGIN_NAMESPACE
class QCamera;
+class QCameraControl;
class QCameraImageProcessingPrivate;
class Q_MULTIMEDIA_EXPORT QCameraImageProcessing : public QObject
@@ -122,7 +123,7 @@ protected:
private:
friend class QCamera;
friend class QCameraPrivate;
- QCameraImageProcessing(QCamera *camera);
+ QCameraImageProcessing(QCamera *camera, QCameraControl *cameraControl);
Q_DISABLE_COPY(QCameraImageProcessing)
Q_DECLARE_PRIVATE(QCameraImageProcessing)
@@ -130,9 +131,6 @@ private:
QT_END_NAMESPACE
-Q_DECLARE_METATYPE(QCameraImageProcessing::WhiteBalanceMode)
-Q_DECLARE_METATYPE(QCameraImageProcessing::ColorFilter)
-
Q_MEDIA_ENUM_DEBUG(QCameraImageProcessing, WhiteBalanceMode)
Q_MEDIA_ENUM_DEBUG(QCameraImageProcessing, ColorFilter)