diff options
author | Yoann Lopes <yoann.lopes@theqtcompany.com> | 2014-12-12 12:00:06 +0100 |
---|---|---|
committer | Yoann Lopes <yoann.lopes@theqtcompany.com> | 2015-01-13 13:34:41 +0100 |
commit | fe21ee675e72f7cb3936db6aa01862cfd322ce50 (patch) | |
tree | 8d2caa1d13b79cff554a7fbb8b98051c0695d683 /src/multimedia/controls | |
parent | c31d8cddd0a2e1f1ee622bc9ea07d038191ceea2 (diff) |
New camera viewfinder settings API.
There already was a control interface for the viewfinder settings
but no real public C++ API and a partial QML API.
This patch adds a new C++ API and improves the QML API.
Supported viewfinder settings are resolution, minimumFrameRate,
maximumFrameRate and pixelFormat. The camera can be queried for
the supported values for each of these settings.
A new control interface was created to match the new API.
Change-Id: I289fea038fe46277a5516c956a64280da09ed985
Reviewed-by: Andrew den Exter <andrew.den.exter@qinetic.com.au>
Diffstat (limited to 'src/multimedia/controls')
4 files changed, 99 insertions, 3 deletions
diff --git a/src/multimedia/controls/qcameracontrol.cpp b/src/multimedia/controls/qcameracontrol.cpp index dfbc07ba4..34433792e 100644 --- a/src/multimedia/controls/qcameracontrol.cpp +++ b/src/multimedia/controls/qcameracontrol.cpp @@ -190,6 +190,7 @@ QCameraControl::~QCameraControl() \value VideoEncodingSettings Video encoder settings are changed, including audio, video and container settings. \value Viewfinder Viewfinder is changed. + \value ViewfinderSettings Viewfinder settings are changed. */ #include "moc_qcameracontrol.cpp" diff --git a/src/multimedia/controls/qcameracontrol.h b/src/multimedia/controls/qcameracontrol.h index 7a9066591..1a59152cc 100644 --- a/src/multimedia/controls/qcameracontrol.h +++ b/src/multimedia/controls/qcameracontrol.h @@ -53,7 +53,8 @@ public: CaptureMode = 1, ImageEncodingSettings = 2, VideoEncodingSettings = 3, - Viewfinder = 4 + Viewfinder = 4, + ViewfinderSettings = 5 }; ~QCameraControl(); diff --git a/src/multimedia/controls/qcameraviewfindersettingscontrol.cpp b/src/multimedia/controls/qcameraviewfindersettingscontrol.cpp index 7a1b74182..22c925e69 100644 --- a/src/multimedia/controls/qcameraviewfindersettingscontrol.cpp +++ b/src/multimedia/controls/qcameraviewfindersettingscontrol.cpp @@ -50,13 +50,17 @@ QT_BEGIN_NAMESPACE The interface name of QCameraViewfinderSettingsControl is \c org.qt-project.qt.cameraviewfindersettingscontrol/5.0 as defined in QCameraViewfinderSettingsControl_iid. - \sa QMediaService::requestControl(), QCamera + \warning New backends should implement QCameraViewfinderSettingsControl2 instead. + Application developers should request this control only if QCameraViewfinderSettingsControl2 + is not available. + + \sa QMediaService::requestControl(), QCameraViewfinderSettingsControl2, QCamera */ /*! \macro QCameraViewfinderSettingsControl_iid - \c org.qt-project.qt.cameraviewfinderresettingscontrol/5.0 + \c org.qt-project.qt.cameraviewfindersettingscontrol/5.0 Defines the interface name of the QCameraViewfinderSettingsControl class. @@ -123,6 +127,73 @@ QCameraViewfinderSettingsControl::~QCameraViewfinderSettingsControl() with viewfinder settings, the camara configuration is usually preferred. */ + +/*! + \class QCameraViewfinderSettingsControl2 + \inmodule QtMultimedia + \ingroup multimedia_control + \since 5.5 + + \brief The QCameraViewfinderSettingsControl2 class provides access to the viewfinder settings + of a camera media service. + + The functionality provided by this control is exposed to application code through the QCamera class. + + The interface name of QCameraViewfinderSettingsControl2 is \c org.qt-project.qt.cameraviewfindersettingscontrol2/5.5 as + defined in QCameraViewfinderSettingsControl2_iid. + + \sa QMediaService::requestControl(), QCameraViewfinderSettings, QCamera +*/ + +/*! + \macro QCameraViewfinderSettingsControl2_iid + + \c org.qt-project.qt.cameraviewfindersettingscontrol2/5.5 + + Defines the interface name of the QCameraViewfinderSettingsControl2 class. + + \relates QCameraViewfinderSettingsControl2 +*/ + +/*! + Constructs a camera viewfinder settings control object with \a parent. +*/ +QCameraViewfinderSettingsControl2::QCameraViewfinderSettingsControl2(QObject *parent) + : QMediaControl(*new QMediaControlPrivate, parent) +{ +} + +/*! + Destroys the camera viewfinder settings control object. +*/ +QCameraViewfinderSettingsControl2::~QCameraViewfinderSettingsControl2() +{ +} + +/*! + \fn QCameraViewfinderSettingsControl2::supportedViewfinderSettings() const + + Returns a list of supported camera viewfinder settings. + + The list is ordered by preference; preferred settings come first. +*/ + +/*! + \fn QCameraViewfinderSettingsControl2::viewfinderSettings() const + + Returns the viewfinder settings. + + If undefined or unsupported values are passed to QCameraViewfinderSettingsControl2::setViewfinderSettings(), + this function returns the actual settings used by the camera viewfinder. These may be available + only once the camera is active. +*/ + +/*! + \fn QCameraViewfinderSettingsControl2::setViewfinderSettings(const QCameraViewfinderSettings &settings) + + Sets the camera viewfinder \a settings. +*/ + #include "moc_qcameraviewfindersettingscontrol.cpp" QT_END_NAMESPACE diff --git a/src/multimedia/controls/qcameraviewfindersettingscontrol.h b/src/multimedia/controls/qcameraviewfindersettingscontrol.h index ea6f19550..534667b8e 100644 --- a/src/multimedia/controls/qcameraviewfindersettingscontrol.h +++ b/src/multimedia/controls/qcameraviewfindersettingscontrol.h @@ -37,6 +37,7 @@ #define QCAMERAVIEWFINDERSETTINGSCONTROL_H #include <QtMultimedia/qmediacontrol.h> +#include <QtMultimedia/qcamera.h> QT_BEGIN_NAMESPACE @@ -69,6 +70,28 @@ protected: #define QCameraViewfinderSettingsControl_iid "org.qt-project.qt.cameraviewfindersettingscontrol/5.0" Q_MEDIA_DECLARE_CONTROL(QCameraViewfinderSettingsControl, QCameraViewfinderSettingsControl_iid) + +// Required for QDoc workaround +class QString; + +class Q_MULTIMEDIA_EXPORT QCameraViewfinderSettingsControl2 : public QMediaControl +{ + Q_OBJECT +public: + virtual ~QCameraViewfinderSettingsControl2(); + + virtual QList<QCameraViewfinderSettings> supportedViewfinderSettings() const = 0; + + virtual QCameraViewfinderSettings viewfinderSettings() const = 0; + virtual void setViewfinderSettings(const QCameraViewfinderSettings &settings) = 0; + +protected: + QCameraViewfinderSettingsControl2(QObject *parent = 0); +}; + +#define QCameraViewfinderSettingsControl2_iid "org.qt-project.qt.cameraviewfindersettingscontrol2/5.5" +Q_MEDIA_DECLARE_CONTROL(QCameraViewfinderSettingsControl2, QCameraViewfinderSettingsControl2_iid) + QT_END_NAMESPACE #endif // QCAMERAVIEWFINDERSETTINGSCONTROL_H |