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>
This commit is contained in:
Yoann Lopes
2014-12-12 12:00:06 +01:00
parent c31d8cddd0
commit fe21ee675e
20 changed files with 1172 additions and 44 deletions

View File

@@ -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"

View File

@@ -53,7 +53,8 @@ public:
CaptureMode = 1,
ImageEncodingSettings = 2,
VideoEncodingSettings = 3,
Viewfinder = 4
Viewfinder = 4,
ViewfinderSettings = 5
};
~QCameraControl();

View File

@@ -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

View File

@@ -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