summaryrefslogtreecommitdiffstats
path: root/src/multimedia/controls
diff options
context:
space:
mode:
authorMichael Goddard <michael.goddard@nokia.com>2012-01-04 16:05:55 +1000
committerQt by Nokia <qt-info@nokia.com>2012-01-05 01:13:44 +0100
commit502d3c8eb353f45f988e371aa6d7938d5ec9d51e (patch)
treef8f2108e825bc13755aad7ae6cef6f9c044ffba7 /src/multimedia/controls
parent6ee1977d60b131ae00919e1f37796c1efc4906f7 (diff)
Restructure the source code a little.
Change-Id: I995b0fb33bdda7f01bf6266c1c50a1b17eba6760 Reviewed-by: Jonas Rabbe <jonas.rabbe@nokia.com>
Diffstat (limited to 'src/multimedia/controls')
-rw-r--r--src/multimedia/controls/controls.pri60
-rw-r--r--src/multimedia/controls/qaudioencodercontrol.cpp167
-rw-r--r--src/multimedia/controls/qaudioencodercontrol.h95
-rw-r--r--src/multimedia/controls/qcameracapturebufferformatcontrol.cpp117
-rw-r--r--src/multimedia/controls/qcameracapturebufferformatcontrol.h81
-rw-r--r--src/multimedia/controls/qcameracapturedestinationcontrol.cpp121
-rw-r--r--src/multimedia/controls/qcameracapturedestinationcontrol.h81
-rw-r--r--src/multimedia/controls/qcameracontrol.cpp215
-rw-r--r--src/multimedia/controls/qcameracontrol.h101
-rw-r--r--src/multimedia/controls/qcameraexposurecontrol.cpp252
-rw-r--r--src/multimedia/controls/qcameraexposurecontrol.h124
-rw-r--r--src/multimedia/controls/qcameraflashcontrol.cpp141
-rw-r--r--src/multimedia/controls/qcameraflashcontrol.h87
-rw-r--r--src/multimedia/controls/qcamerafocuscontrol.cpp253
-rw-r--r--src/multimedia/controls/qcamerafocuscontrol.h103
-rw-r--r--src/multimedia/controls/qcameraimagecapturecontrol.cpp208
-rw-r--r--src/multimedia/controls/qcameraimagecapturecontrol.h99
-rw-r--r--src/multimedia/controls/qcameraimageprocessingcontrol.cpp181
-rw-r--r--src/multimedia/controls/qcameraimageprocessingcontrol.h100
-rw-r--r--src/multimedia/controls/qcameralockscontrol.cpp134
-rw-r--r--src/multimedia/controls/qcameralockscontrol.h86
-rw-r--r--src/multimedia/controls/qimageencodercontrol.cpp142
-rw-r--r--src/multimedia/controls/qimageencodercontrol.h91
-rw-r--r--src/multimedia/controls/qmediabackgroundplaybackcontrol.cpp149
-rw-r--r--src/multimedia/controls/qmediabackgroundplaybackcontrol.h83
-rw-r--r--src/multimedia/controls/qmediacontainercontrol.cpp126
-rw-r--r--src/multimedia/controls/qmediacontainercontrol.h80
-rw-r--r--src/multimedia/controls/qmediagaplessplaybackcontrol.cpp165
-rw-r--r--src/multimedia/controls/qmediagaplessplaybackcontrol.h82
-rw-r--r--src/multimedia/controls/qmedianetworkaccesscontrol.cpp103
-rw-r--r--src/multimedia/controls/qmedianetworkaccesscontrol.h83
-rw-r--r--src/multimedia/controls/qmediaplayercontrol.cpp414
-rw-r--r--src/multimedia/controls/qmediaplayercontrol.h131
-rw-r--r--src/multimedia/controls/qmediaplaylistcontrol.cpp219
-rw-r--r--src/multimedia/controls/qmediaplaylistcontrol.h98
-rw-r--r--src/multimedia/controls/qmediaplaylistsourcecontrol.cpp128
-rw-r--r--src/multimedia/controls/qmediaplaylistsourcecontrol.h82
-rw-r--r--src/multimedia/controls/qmediarecordercontrol.cpp209
-rw-r--r--src/multimedia/controls/qmediarecordercontrol.h101
-rw-r--r--src/multimedia/controls/qmediastreamscontrol.cpp173
-rw-r--r--src/multimedia/controls/qmediastreamscontrol.h95
-rw-r--r--src/multimedia/controls/qmetadatareadercontrol.cpp163
-rw-r--r--src/multimedia/controls/qmetadatareadercontrol.h92
-rw-r--r--src/multimedia/controls/qmetadatawritercontrol.cpp195
-rw-r--r--src/multimedia/controls/qmetadatawritercontrol.h97
-rw-r--r--src/multimedia/controls/qradiodatacontrol.cpp216
-rw-r--r--src/multimedia/controls/qradiodatacontrol.h97
-rw-r--r--src/multimedia/controls/qradiotunercontrol.cpp378
-rw-r--r--src/multimedia/controls/qradiotunercontrol.h125
-rw-r--r--src/multimedia/controls/qvideodevicecontrol.cpp159
-rw-r--r--src/multimedia/controls/qvideodevicecontrol.h88
-rw-r--r--src/multimedia/controls/qvideoencodercontrol.cpp190
-rw-r--r--src/multimedia/controls/qvideoencodercontrol.h98
-rw-r--r--src/multimedia/controls/qvideorenderercontrol.cpp114
-rw-r--r--src/multimedia/controls/qvideorenderercontrol.h81
55 files changed, 7653 insertions, 0 deletions
diff --git a/src/multimedia/controls/controls.pri b/src/multimedia/controls/controls.pri
new file mode 100644
index 000000000..98137dc0f
--- /dev/null
+++ b/src/multimedia/controls/controls.pri
@@ -0,0 +1,60 @@
+
+INCLUDEPATH += controls
+
+PUBLIC_HEADERS += \
+ controls/qaudioencodercontrol.h \
+ controls/qcameracapturebufferformatcontrol.h \
+ controls/qcameracapturedestinationcontrol.h \
+ controls/qcameracontrol.h \
+ controls/qcameraexposurecontrol.h \
+ controls/qcameraflashcontrol.h \
+ controls/qcamerafocuscontrol.h \
+ controls/qcameraimagecapturecontrol.h \
+ controls/qcameraimageprocessingcontrol.h \
+ controls/qcameralockscontrol.h \
+ controls/qimageencodercontrol.h \
+ controls/qmediabackgroundplaybackcontrol.h \
+ controls/qmediacontainercontrol.h \
+ controls/qmediagaplessplaybackcontrol.h \
+ controls/qmedianetworkaccesscontrol.h \
+ controls/qmediaplayercontrol.h \
+ controls/qmediaplaylistcontrol.h \
+ controls/qmediaplaylistsourcecontrol.h \
+ controls/qmediarecordercontrol.h \
+ controls/qmediastreamscontrol.h \
+ controls/qmetadatareadercontrol.h \
+ controls/qmetadatawritercontrol.h \
+ controls/qradiodatacontrol.h \
+ controls/qradiotunercontrol.h \
+ controls/qvideodevicecontrol.h \
+ controls/qvideoencodercontrol.h \
+ controls/qvideorenderercontrol.h
+
+SOURCES += \
+ controls/qaudioencodercontrol.cpp \
+ controls/qcameracapturebufferformatcontrol.cpp \
+ controls/qcameracapturedestinationcontrol.cpp \
+ controls/qcameracontrol.cpp \
+ controls/qcameraexposurecontrol.cpp \
+ controls/qcameraflashcontrol.cpp \
+ controls/qcamerafocuscontrol.cpp \
+ controls/qcameraimagecapturecontrol.cpp \
+ controls/qcameraimageprocessingcontrol.cpp \
+ controls/qcameralockscontrol.cpp \
+ controls/qimageencodercontrol.cpp \
+ controls/qmediabackgroundplaybackcontrol.cpp \
+ controls/qmediacontainercontrol.cpp \
+ controls/qmediagaplessplaybackcontrol.cpp \
+ controls/qmedianetworkaccesscontrol.cpp \
+ controls/qmediaplayercontrol.cpp \
+ controls/qmediaplaylistcontrol.cpp \
+ controls/qmediaplaylistsourcecontrol.cpp \
+ controls/qmediarecordercontrol.cpp \
+ controls/qmediastreamscontrol.cpp \
+ controls/qmetadatareadercontrol.cpp \
+ controls/qmetadatawritercontrol.cpp \
+ controls/qradiodatacontrol.cpp \
+ controls/qradiotunercontrol.cpp \
+ controls/qvideodevicecontrol.cpp \
+ controls/qvideoencodercontrol.cpp \
+ controls/qvideorenderercontrol.cpp
diff --git a/src/multimedia/controls/qaudioencodercontrol.cpp b/src/multimedia/controls/qaudioencodercontrol.cpp
new file mode 100644
index 000000000..62fa89371
--- /dev/null
+++ b/src/multimedia/controls/qaudioencodercontrol.cpp
@@ -0,0 +1,167 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qaudioencodercontrol.h"
+#include <QtCore/qstringlist.h>
+
+QT_BEGIN_NAMESPACE
+
+
+/*!
+ \class QAudioEncoderControl
+ \inmodule QtMultimedia
+ \ingroup multimedia-serv
+ \since 1.0
+
+ \brief The QAudioEncoderControl class provides access to the settings of a
+ media service that performs audio encoding.
+
+ If a QMediaService supports encoding audio data it will implement
+ QAudioEncoderControl. This control provides information about the limits
+ of restricted audio encoder options and allows the selection of a set of
+ audio encoder settings as specified in a QAudioEncoderSettings object.
+
+ The functionality provided by this control is exposed to application code through the
+ QMediaRecorder class.
+
+ The interface name of QAudioEncoderControl is \c com.nokia.Qt.QAudioEncoderControl/1.0 as
+ defined in QAudioEncoderControl_iid.
+
+ \sa QMediaService::requestControl(), QMediaRecorder
+*/
+
+/*!
+ \macro QAudioEncoderControl_iid
+
+ \c com.nokia.Qt.AudioEncoderControl/1.0
+
+ Defines the interface name of the QAudioEncoderControl class.
+
+ \relates QAudioEncoderControl
+*/
+
+/*!
+ Create a new audio encode control object with the given \a parent.
+*/
+QAudioEncoderControl::QAudioEncoderControl(QObject *parent)
+ :QMediaControl(parent)
+{
+}
+
+/*!
+ Destroys the audio encode control.
+*/
+QAudioEncoderControl::~QAudioEncoderControl()
+{
+}
+
+/*!
+ \fn QAudioEncoderControl::supportedAudioCodecs() const
+
+ Returns the list of supported audio codec names.
+ \since 1.0
+*/
+
+/*!
+ \fn QAudioEncoderControl::codecDescription(const QString &codec) const
+
+ Returns description of audio \a codec.
+ \since 1.0
+*/
+
+/*!
+ \fn QAudioEncoderControl::supportedSampleRates(const QAudioEncoderSettings &settings = QAudioEncoderSettings(),
+ bool *continuous) const
+
+ Returns the list of supported audio sample rates, if known.
+
+ If non null audio \a settings parameter is passed,
+ the returned list is reduced to sample rates supported with partial settings applied.
+
+ It can be used for example to query the list of sample rates, supported by specific audio codec.
+
+ If the encoder supports arbitrary sample rates within the supported rates range,
+ *\a continuous is set to true, otherwise *\a continuous is set to false.
+ \since 1.0
+*/
+
+/*!
+ \fn QAudioEncoderControl::supportedEncodingOptions(const QString &codec) const
+
+ Returns the list of \a codec specific audio encoding options.
+ \since 1.0
+*/
+
+/*!
+ \fn QAudioEncoderControl::encodingOption(const QString &codec, const QString &option) const
+
+ Returns the value of audio encoding \a option for \a codec.
+ \since 1.0
+*/
+
+/*!
+ \fn QAudioEncoderControl::setEncodingOption(const QString &codec, const QString &option, const QVariant &value)
+
+ Set the \a codec specific \a option to \a value.
+ \since 1.0
+*/
+
+/*!
+ \fn QAudioEncoderControl::audioSettings() const
+
+ Returns the audio encoder settings.
+
+ The returned value may be different tha passed to QAudioEncoderControl::setAudioSettings()
+ if the settings contains the default or undefined parameters.
+ In this case if the undefined parameters are already resolved, they should be returned.
+ \since 1.0
+*/
+
+/*!
+ \fn QAudioEncoderControl::setAudioSettings(const QAudioEncoderSettings &settings)
+
+ Sets the selected audio \a settings.
+ \since 1.0
+*/
+
+#include "moc_qaudioencodercontrol.cpp"
+QT_END_NAMESPACE
+
diff --git a/src/multimedia/controls/qaudioencodercontrol.h b/src/multimedia/controls/qaudioencodercontrol.h
new file mode 100644
index 000000000..2e3a4bf87
--- /dev/null
+++ b/src/multimedia/controls/qaudioencodercontrol.h
@@ -0,0 +1,95 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QAUDIOENCODERCONTROL_H
+#define QAUDIOENCODERCONTROL_H
+
+#include "qmediacontrol.h"
+#include "qmediarecorder.h"
+#include <QtCore/qlist.h>
+#include <QtCore/qpair.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Multimedia)
+
+class QStringList;
+class QAudioFormat;
+QT_END_NAMESPACE
+
+QT_BEGIN_NAMESPACE
+
+class Q_MULTIMEDIA_EXPORT QAudioEncoderControl : public QMediaControl
+{
+ Q_OBJECT
+
+public:
+ virtual ~QAudioEncoderControl();
+
+ virtual QStringList supportedAudioCodecs() const = 0;
+ virtual QString codecDescription(const QString &codecName) const = 0;
+
+ virtual QList<int> supportedSampleRates(const QAudioEncoderSettings &settings,
+ bool *continuous = 0) const = 0;
+
+ virtual QAudioEncoderSettings audioSettings() const = 0;
+ virtual void setAudioSettings(const QAudioEncoderSettings&) = 0;
+
+ virtual QStringList supportedEncodingOptions(const QString &codec) const = 0;
+ virtual QVariant encodingOption(const QString &codec, const QString &name) const = 0;
+ virtual void setEncodingOption(
+ const QString &codec, const QString &name, const QVariant &value) = 0;
+
+protected:
+ QAudioEncoderControl(QObject *parent = 0);
+};
+
+#define QAudioEncoderControl_iid "com.nokia.Qt.QAudioEncoderControl/1.0"
+Q_MEDIA_DECLARE_CONTROL(QAudioEncoderControl, QAudioEncoderControl_iid)
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+
+#endif // QAUDIOCAPTUREPROPERTIESCONTROL_H
diff --git a/src/multimedia/controls/qcameracapturebufferformatcontrol.cpp b/src/multimedia/controls/qcameracapturebufferformatcontrol.cpp
new file mode 100644
index 000000000..536c8b329
--- /dev/null
+++ b/src/multimedia/controls/qcameracapturebufferformatcontrol.cpp
@@ -0,0 +1,117 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qcameracapturebufferformatcontrol.h>
+
+QT_BEGIN_NAMESPACE
+
+/*!
+ \class QCameraCaptureBufferFormatControl
+
+ \brief The QCameraCaptureBufferFormatControl class provides a control for setting the capture buffer format.
+
+ The format is of type QVideoFrame::PixelFormat.
+
+ \inmodule QtMultimedia
+ \ingroup multimedia-serv
+
+ The interface name of QCameraCaptureBufferFormatControl is \c com.nokia.Qt.QCameraCaptureBufferFormatControl/1.0 as
+ defined in QCameraCaptureBufferFormatControl_iid.
+
+ \sa QMediaService::requestControl()
+*/
+
+/*!
+ \macro QCameraCaptureBufferFormatControl_iid
+
+ \c com.nokia.Qt.QCameraCaptureBufferFormatControl/1.0
+
+ Defines the interface name of the QCameraCaptureBufferFormatControl class.
+
+ \relates QCameraCaptureBufferFormatControl
+*/
+
+/*!
+ Constructs a new image buffer capture format control object with the given \a parent
+*/
+QCameraCaptureBufferFormatControl::QCameraCaptureBufferFormatControl(QObject *parent)
+ :QMediaControl(parent)
+{
+}
+
+/*!
+ Destroys an image buffer capture format control.
+*/
+QCameraCaptureBufferFormatControl::~QCameraCaptureBufferFormatControl()
+{
+}
+
+/*!
+ \fn QCameraCaptureBufferFormatControl::supportedBufferFormats() const
+
+ Returns the list of the supported buffer capture formats.
+ \since 1.2
+*/
+
+/*!
+ \fn QCameraCaptureBufferFormatControl::bufferFormat() const
+
+ Returns the current buffer capture format.
+ \since 1.2
+*/
+
+/*!
+ \fn QCameraCaptureBufferFormatControl::setBufferFormat(QVideoFrame::PixelFormat format)
+
+ Sets the buffer capture \a format.
+ \since 1.2
+*/
+
+/*!
+ \fn QCameraCaptureBufferFormatControl::bufferFormatChanged(QVideoFrame::PixelFormat format)
+
+ Signals the buffer image capture format changed to \a format.
+ \since 1.2
+*/
+
+#include "moc_qcameracapturebufferformatcontrol.cpp"
+QT_END_NAMESPACE
+
diff --git a/src/multimedia/controls/qcameracapturebufferformatcontrol.h b/src/multimedia/controls/qcameracapturebufferformatcontrol.h
new file mode 100644
index 000000000..81079a77d
--- /dev/null
+++ b/src/multimedia/controls/qcameracapturebufferformatcontrol.h
@@ -0,0 +1,81 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QCAMERACAPTUREBUFFERFORMATCONTROL_H
+#define QCAMERACAPTUREBUFFERFORMATCONTROL_H
+
+#include <qmediacontrol.h>
+#include <qcameraimagecapture.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Multimedia)
+
+
+class Q_MULTIMEDIA_EXPORT QCameraCaptureBufferFormatControl : public QMediaControl
+{
+ Q_OBJECT
+public:
+ ~QCameraCaptureBufferFormatControl();
+
+ virtual QList<QVideoFrame::PixelFormat> supportedBufferFormats() const = 0;
+ virtual QVideoFrame::PixelFormat bufferFormat() const = 0;
+ virtual void setBufferFormat(QVideoFrame::PixelFormat format) = 0;
+
+Q_SIGNALS:
+ void bufferFormatChanged(QVideoFrame::PixelFormat);
+
+protected:
+ QCameraCaptureBufferFormatControl(QObject* parent = 0);
+};
+
+#define QCameraCaptureBufferFormatControl_iid "com.nokia.Qt.QCameraCaptureBufferFormatControl/1.0"
+Q_MEDIA_DECLARE_CONTROL(QCameraCaptureBufferFormatControl, QCameraCaptureBufferFormatControl_iid)
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+
+#endif
+
diff --git a/src/multimedia/controls/qcameracapturedestinationcontrol.cpp b/src/multimedia/controls/qcameracapturedestinationcontrol.cpp
new file mode 100644
index 000000000..5072ae774
--- /dev/null
+++ b/src/multimedia/controls/qcameracapturedestinationcontrol.cpp
@@ -0,0 +1,121 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qcameracapturedestinationcontrol.h>
+#include <QtCore/qstringlist.h>
+
+QT_BEGIN_NAMESPACE
+
+/*!
+ \class QCameraCaptureDestinationControl
+
+ \brief The QCameraCaptureDestinationControl class provides a control for setting capture destination.
+
+ Depending on backend capabilities capture to file, buffer or both can be supported.
+
+ \inmodule QtMultimedia
+ \ingroup multimedia-serv
+
+
+
+ The interface name of QCameraCaptureDestinationControl is \c com.nokia.Qt.QCameraCaptureDestinationControl/1.0 as
+ defined in QCameraCaptureDestinationControl_iid.
+
+
+ \sa QMediaService::requestControl()
+*/
+
+/*!
+ \macro QCameraCaptureDestinationControl_iid
+
+ \c com.nokia.Qt.QCameraCaptureDestinationControl/1.0
+
+ Defines the interface name of the QCameraCaptureDestinationControl class.
+
+ \relates QCameraCaptureDestinationControl
+*/
+
+/*!
+ Constructs a new image capture destination control object with the given \a parent
+*/
+QCameraCaptureDestinationControl::QCameraCaptureDestinationControl(QObject *parent)
+ :QMediaControl(parent)
+{
+}
+
+/*!
+ Destroys an image capture destination control.
+*/
+QCameraCaptureDestinationControl::~QCameraCaptureDestinationControl()
+{
+}
+
+/*!
+ \fn QCameraCaptureDestinationControl::isCaptureDestinationSupported(QCameraImageCapture::CaptureDestinations destination) const
+
+ Returns true if the capture \a destination is supported; and false if it is not.
+ \since 1.2
+*/
+
+/*!
+ \fn QCameraCaptureDestinationControl::captureDestination() const
+
+ Returns the current capture \a destination. The default destination is QCameraImageCapture::CaptureToFile.
+ \since 1.2
+*/
+
+/*!
+ \fn QCameraCaptureDestinationControl::setCaptureDestination(QCameraImageCapture::CaptureDestinations destination)
+
+ Sets the capture \a destination.
+ \since 1.2
+*/
+
+/*!
+ \fn QCameraCaptureDestinationControl::captureDestinationChanged(QCameraImageCapture::CaptureDestinations destination)
+
+ Signals the image capture \a destination changed.
+ \since 1.2
+*/
+
+#include "moc_qcameracapturedestinationcontrol.cpp"
+QT_END_NAMESPACE
+
diff --git a/src/multimedia/controls/qcameracapturedestinationcontrol.h b/src/multimedia/controls/qcameracapturedestinationcontrol.h
new file mode 100644
index 000000000..cdd769a4d
--- /dev/null
+++ b/src/multimedia/controls/qcameracapturedestinationcontrol.h
@@ -0,0 +1,81 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QCAMERACAPTUREDESTINATIONCONTROL_H
+#define QCAMERACAPTUREDESTINATIONCONTROL_H
+
+#include <qmediacontrol.h>
+#include <qcameraimagecapture.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Multimedia)
+
+
+class Q_MULTIMEDIA_EXPORT QCameraCaptureDestinationControl : public QMediaControl
+{
+ Q_OBJECT
+public:
+ ~QCameraCaptureDestinationControl();
+
+ virtual bool isCaptureDestinationSupported(QCameraImageCapture::CaptureDestinations destination) const = 0;
+ virtual QCameraImageCapture::CaptureDestinations captureDestination() const = 0;
+ virtual void setCaptureDestination(QCameraImageCapture::CaptureDestinations destination) = 0;
+
+Q_SIGNALS:
+ void captureDestinationChanged(QCameraImageCapture::CaptureDestinations);
+
+protected:
+ QCameraCaptureDestinationControl(QObject* parent = 0);
+};
+
+#define QCameraCaptureDestinationControl_iid "com.nokia.Qt.QCameraCaptureDestinationControl/1.0"
+Q_MEDIA_DECLARE_CONTROL(QCameraCaptureDestinationControl, QCameraCaptureDestinationControl_iid)
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+
+#endif
+
diff --git a/src/multimedia/controls/qcameracontrol.cpp b/src/multimedia/controls/qcameracontrol.cpp
new file mode 100644
index 000000000..df5c44cc1
--- /dev/null
+++ b/src/multimedia/controls/qcameracontrol.cpp
@@ -0,0 +1,215 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qcameracontrol.h>
+#include "qmediacontrol_p.h"
+
+QT_BEGIN_NAMESPACE
+
+/*!
+ \class QCameraControl
+
+
+
+ \brief The QCameraControl class is an abstract base class for
+ classes that control still cameras or video cameras.
+
+ \inmodule QtMultimedia
+ \ingroup multimedia-serv
+ \since 1.1
+
+ This service is provided by a QMediaService object via
+ QMediaService::control(). It is used by QCamera.
+
+ The interface name of QCameraControl is \c com.nokia.Qt.QCameraControl/1.0 as
+ defined in QCameraControl_iid.
+
+
+
+ \sa QMediaService::requestControl(), QCamera
+*/
+
+/*!
+ \macro QCameraControl_iid
+
+ \c com.nokia.Qt.QCameraControl/1.0
+
+ Defines the interface name of the QCameraControl class.
+
+ \relates QCameraControl
+*/
+
+/*!
+ Constructs a camera control object with \a parent.
+*/
+
+QCameraControl::QCameraControl(QObject *parent):
+ QMediaControl(*new QMediaControlPrivate, parent)
+{
+}
+
+/*!
+ Destruct the camera control object.
+*/
+
+QCameraControl::~QCameraControl()
+{
+}
+
+/*!
+ \fn QCameraControl::state() const
+
+ Returns the state of the camera service.
+
+ \since 1.1
+ \sa QCamera::state
+*/
+
+/*!
+ \fn QCameraControl::setState(QCamera::State state)
+
+ Sets the camera \a state.
+
+ State changes are synchronous and indicate user intention,
+ while camera status is used as a feedback mechanism to inform application about backend status.
+ Status changes are reported asynchronously with QCameraControl::statusChanged() signal.
+
+ \since 1.1
+ \sa QCamera::State
+*/
+
+/*!
+ \fn void QCameraControl::stateChanged(QCamera::State state)
+
+ Signal emitted when the camera \a state changes.
+
+ In most cases the state chage is caused by QCameraControl::setState(),
+ but if critical error has occurred the state changes to QCamera::UnloadedState.
+ \since 1.1
+*/
+
+/*!
+ \fn QCameraControl::status() const
+
+ Returns the status of the camera service.
+
+ \since 1.1
+ \sa QCamera::state
+*/
+
+/*!
+ \fn void QCameraControl::statusChanged(QCamera::Status status)
+
+ Signal emitted when the camera \a status changes.
+ \since 1.1
+*/
+
+
+/*!
+ \fn void QCameraControl::error(int error, const QString &errorString)
+
+ Signal emitted when an error occurs with error code \a error and
+ a description of the error \a errorString.
+ \since 1.1
+*/
+
+/*!
+ \fn Camera::CaptureMode QCameraControl::captureMode() const = 0
+
+ Returns the current capture mode.
+ \since 1.1
+*/
+
+/*!
+ \fn void QCameraControl::setCaptureMode(QCamera::CaptureMode mode) = 0;
+
+ Sets the current capture \a mode.
+
+ The capture mode changes are synchronous and allowed in any camera state.
+
+ If the capture mode is changed while camera is active,
+ it's recommended to change status to QCamera::LoadedStatus
+ and start activating the camera in the next event loop
+ with the status changed to QCamera::StartingStatus.
+ This allows the capture settings to be applied before camera is started.
+ Than change the status to QCamera::StartedStatus when the capture mode change is done.
+ \since 1.1
+*/
+
+/*!
+ \fn bool QCameraControl::isCaptureModeSupported(QCamera::CaptureMode mode) const = 0;
+
+ Returns true if the capture \a mode is suported.
+ \since 1.1
+*/
+
+/*!
+ \fn QCameraControl::captureModeChanged(QCamera::CaptureMode mode)
+
+ Signal emitted when the camera capture \a mode changes.
+ \since 1.1
+ */
+
+/*!
+ \fn bool QCameraControl::canChangeProperty(PropertyChangeType changeType, QCamera::Status status) const
+
+ Returns true if backend can effectively apply changing camera properties of \a changeType type
+ while the camera state is QCamera::Active and camera status matches \a status parameter.
+
+ If backend doesn't support applying this change in the active state, it will be stopped
+ before the settings are changed and restarted after.
+ Otherwise the backend should apply the change in the current state,
+ with the camera status indicating the progress, if necessary.
+ \since 1.1
+*/
+
+/*!
+ \enum QCameraControl::PropertyChangeType
+
+ \value CaptureMode Indicates the capture mode is changed.
+ \value ImageEncodingSettings Image encoder settings are changed, including resolution.
+ \value VideoEncodingSettings
+ Video encoder settings are changed, including audio, video and container settings.
+ \value Viewfinder Viewfinder is changed.
+*/
+
+#include "moc_qcameracontrol.cpp"
+QT_END_NAMESPACE
diff --git a/src/multimedia/controls/qcameracontrol.h b/src/multimedia/controls/qcameracontrol.h
new file mode 100644
index 000000000..dfc2b3743
--- /dev/null
+++ b/src/multimedia/controls/qcameracontrol.h
@@ -0,0 +1,101 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QCAMERACONTROL_H
+#define QCAMERACONTROL_H
+
+#include <qmediacontrol.h>
+#include <qmediaobject.h>
+
+#include <qcamera.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Multimedia)
+
+
+class Q_MULTIMEDIA_EXPORT QCameraControl : public QMediaControl
+{
+ Q_OBJECT
+
+public:
+ enum PropertyChangeType {
+ CaptureMode = 1,
+ ImageEncodingSettings = 2,
+ VideoEncodingSettings = 3,
+ Viewfinder = 4
+ };
+
+ ~QCameraControl();
+
+ virtual QCamera::State state() const = 0;
+ virtual void setState(QCamera::State state) = 0;
+
+ virtual QCamera::Status status() const = 0;
+
+ virtual QCamera::CaptureMode captureMode() const = 0;
+ virtual void setCaptureMode(QCamera::CaptureMode) = 0;
+ virtual bool isCaptureModeSupported(QCamera::CaptureMode mode) const = 0;
+
+ virtual bool canChangeProperty(PropertyChangeType changeType, QCamera::Status status) const = 0;
+
+Q_SIGNALS:
+ void stateChanged(QCamera::State);
+ void statusChanged(QCamera::Status);
+ void error(int error, const QString &errorString);
+ void captureModeChanged(QCamera::CaptureMode);
+
+protected:
+ QCameraControl(QObject* parent = 0);
+};
+
+#define QCameraControl_iid "com.nokia.Qt.QCameraControl/1.0"
+Q_MEDIA_DECLARE_CONTROL(QCameraControl, QCameraControl_iid)
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+
+#endif // QCAMERACONTROL_H
+
diff --git a/src/multimedia/controls/qcameraexposurecontrol.cpp b/src/multimedia/controls/qcameraexposurecontrol.cpp
new file mode 100644
index 000000000..4a6f655f8
--- /dev/null
+++ b/src/multimedia/controls/qcameraexposurecontrol.cpp
@@ -0,0 +1,252 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qcameraexposurecontrol.h>
+#include "qmediacontrol_p.h"
+
+QT_BEGIN_NAMESPACE
+
+/*!
+ \class QCameraExposureControl
+
+ \brief The QCameraExposureControl class allows controlling camera exposure parameters.
+
+ \inmodule QtMultimedia
+ \ingroup multimedia-serv
+ \since 1.1
+
+ You can adjust a number of parameters that will affect images and video taken with
+ the corresponding QCamera object.
+
+ There are a number of different parameters that can be adjusted, including:
+
+ \table
+ \row
+ \header
+ \
+
+ \endtable
+
+ The interface name of QCameraExposureControl is \c com.nokia.Qt.QCameraExposureControl/1.0 as
+ defined in QCameraExposureControl_iid.
+
+ \sa QCamera
+*/
+
+/*!
+ \macro QCameraExposureControl_iid
+
+ \c com.nokia.Qt.QCameraExposureControl/1.0
+
+ Defines the interface name of the QCameraExposureControl class.
+
+ \relates QCameraExposureControl
+*/
+
+/*!
+ Constructs a camera exposure control object with \a parent.
+*/
+QCameraExposureControl::QCameraExposureControl(QObject *parent):
+ QMediaControl(*new QMediaControlPrivate, parent)
+{
+}
+
+/*!
+ Destroys the camera control object.
+*/
+QCameraExposureControl::~QCameraExposureControl()
+{
+}
+
+/*!
+ \fn QCamera::ExposureMode QCameraExposureControl::exposureMode() const
+
+ Returns the exposure mode.
+ \since 1.1
+*/
+
+
+/*!
+ \fn void QCameraExposureControl::setExposureMode(QCameraExposure::ExposureMode mode)
+
+ Set the exposure mode to \a mode.
+ \since 1.1
+*/
+
+
+/*!
+ \fn bool QCameraExposureControl::isExposureModeSupported(QCameraExposure::ExposureMode mode) const
+
+ Returns true if the exposure \a mode is supported.
+ \since 1.1
+*/
+
+
+/*!
+ \fn QCameraExposure::MeteringMode QCameraExposureControl::meteringMode() const
+ Returns the current metering mode.
+ \since 1.1
+*/
+
+/*!
+ \fn void QCameraExposureControl::setMeteringMode(QCameraExposure::MeteringMode mode)
+
+ Set the metering mode to \a mode.
+ \since 1.1
+*/
+
+
+/*!
+ \fn bool QCameraExposureControl::isMeteringModeSupported(QCameraExposure::MeteringMode mode) const
+ Returns true if the metering \a mode is supported.
+ \since 1.1
+*/
+
+/*!
+ \enum QCameraExposureControl::ExposureParameter
+ \value InvalidParameter
+ Parameter is invalid.
+ \value ISO
+ Camera ISO sensitivity, specified as integer value.
+ \value Aperture
+ Lens aperture is specified as an qreal F number.
+ The supported apertures list can change depending on the focal length,
+ in such a case the exposureParameterRangeChanged() signal is emitted.
+ \value ShutterSpeed
+ Shutter speed in seconds, specified as qreal.
+ \value ExposureCompensation
+ Exposure compensation, specified as qreal EV value.
+ \value FlashPower
+ Manual flash power, specified as qreal value.
+ Accepted power range is [0..1.0],
+ with 0 value means no flash and 1.0 corresponds to full flash power.
+
+ This value is only used in the \l{QCameraExposure::FlashManual}{manual flash mode}.
+ \value FlashCompensation
+ Flash compensation, specified as qreal EV value.
+ \value ExtendedExposureParameter
+ The base value for platform specific extended parameters.
+ For such parameters the sequential values starting from ExtendedExposureParameter shuld be used.
+*/
+
+/*!
+ \enum QCameraExposureControl::ParameterFlag
+ \value AutomaticValue
+ Use the automatic values for parameters.
+ \value ReadOnly
+ Parameters are read only.
+ \value ContinuousRange
+ Parameters are continuous in their range.
+*/
+
+/*!
+ \fn QCameraExposureControl::isParameterSupported(ExposureParameter parameter) const
+
+ Returns true is exposure \a parameter is supported by backend.
+ \since 1.1
+*/
+
+/*!
+ \fn QCameraExposureControl::exposureParameter(ExposureParameter parameter) const
+
+ Returns the exposure \a parameter value, or invalid QVariant() if the value is unknown or not supported.
+ \since 1.1
+*/
+
+/*!
+ \fn QCameraExposureControl::exposureParameterFlags(ExposureParameter parameter) const
+
+ Returns the properties of exposure \a parameter.
+ \since 1.1
+*/
+
+
+/*!
+ \fn QCameraExposureControl::supportedParameterRange(ExposureParameter parameter) const
+
+ Returns the list of supported \a parameter values;
+ \since 1.1
+*/
+
+/*!
+ \fn bool QCameraExposureControl::setExposureParameter(ExposureParameter parameter, const QVariant& value)
+
+ Set the exposure \a parameter to \a value.
+ If a null or invalid QVariant is passed, backend should choose the value automatically,
+ and if possible report the actual value to user with QCameraExposureControl::exposureParameter().
+
+ Returns true if parameter is supported and value is correct.
+ \since 1.1
+*/
+
+/*!
+ \fn QCameraExposureControl::extendedParameterName(ExposureParameter parameter)
+
+ Returns the extended exposure \a parameter name.
+ \since 1.1
+*/
+
+/*!
+ \fn void QCameraExposureControl::flashReady(bool ready)
+
+ Signal emitted when flash state changes, flash is charged \a ready.
+ \since 1.1
+*/
+
+/*!
+ \fn void QCameraExposureControl::exposureParameterChanged(int parameter)
+
+ Signal emitted when the exposure \a parameter has changed.
+ \since 1.1
+*/
+
+/*!
+
+ \fn void QCameraExposureControl::exposureParameterRangeChanged(int parameter)
+
+ Signal emitted when the exposure \a parameter range has changed.
+ \since 1.1
+*/
+
+
+#include "moc_qcameraexposurecontrol.cpp"
+QT_END_NAMESPACE
+
diff --git a/src/multimedia/controls/qcameraexposurecontrol.h b/src/multimedia/controls/qcameraexposurecontrol.h
new file mode 100644
index 000000000..ff60784bf
--- /dev/null
+++ b/src/multimedia/controls/qcameraexposurecontrol.h
@@ -0,0 +1,124 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QCAMERAEXPOSURECONTROL_H
+#define QCAMERAEXPOSURECONTROL_H
+
+#include <qmediacontrol.h>
+#include <qmediaobject.h>
+
+#include <qcameraexposure.h>
+#include <qcamera.h>
+#include <qmediaenumdebug.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Multimedia)
+
+
+class Q_MULTIMEDIA_EXPORT QCameraExposureControl : public QMediaControl
+{
+ Q_OBJECT
+ Q_ENUMS(ExposureParameter)
+
+public:
+ ~QCameraExposureControl();
+
+ enum ExposureParameter {
+ InvalidParameter = 0,
+ ISO = 1,
+ Aperture = 2,
+ ShutterSpeed = 3,
+ ExposureCompensation = 4,
+ FlashPower = 5,
+ FlashCompensation = 6,
+ ExtendedExposureParameter = 1000
+ };
+
+ enum ParameterFlag {
+ AutomaticValue = 0x01,
+ ReadOnly = 0x02,
+ ContinuousRange = 0x04
+ };
+ Q_DECLARE_FLAGS(ParameterFlags, ParameterFlag)
+
+ virtual QCameraExposure::ExposureMode exposureMode() const = 0;
+ virtual void setExposureMode(QCameraExposure::ExposureMode mode) = 0;
+ virtual bool isExposureModeSupported(QCameraExposure::ExposureMode mode) const = 0;
+
+ virtual QCameraExposure::MeteringMode meteringMode() const = 0;
+ virtual void setMeteringMode(QCameraExposure::MeteringMode mode) = 0;
+ virtual bool isMeteringModeSupported(QCameraExposure::MeteringMode mode) const = 0;
+
+ virtual bool isParameterSupported(ExposureParameter parameter) const = 0;
+ virtual QVariant exposureParameter(ExposureParameter parameter) const = 0;
+ virtual ParameterFlags exposureParameterFlags(ExposureParameter parameter) const = 0;
+ virtual QVariantList supportedParameterRange(ExposureParameter parameter) const = 0;
+ virtual bool setExposureParameter(ExposureParameter parameter, const QVariant& value) = 0;
+
+ virtual QString extendedParameterName(ExposureParameter parameter) = 0;
+
+Q_SIGNALS:
+ void flashReady(bool);
+
+ void exposureParameterChanged(int parameter);
+ void exposureParameterRangeChanged(int parameter);
+
+protected:
+ QCameraExposureControl(QObject* parent = 0);
+};
+
+#define QCameraExposureControl_iid "com.nokia.Qt.QCameraExposureControl/1.0"
+Q_MEDIA_DECLARE_CONTROL(QCameraExposureControl, QCameraExposureControl_iid)
+
+Q_DECLARE_OPERATORS_FOR_FLAGS(QCameraExposureControl::ParameterFlags)
+
+Q_MEDIA_ENUM_DEBUG(QCameraExposureControl, ExposureParameter)
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+
+#endif // QCAMERAEXPOSURECONTROL_H
+
diff --git a/src/multimedia/controls/qcameraflashcontrol.cpp b/src/multimedia/controls/qcameraflashcontrol.cpp
new file mode 100644
index 000000000..34dcbdeb5
--- /dev/null
+++ b/src/multimedia/controls/qcameraflashcontrol.cpp
@@ -0,0 +1,141 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qcameraflashcontrol.h>
+#include "qmediacontrol_p.h"
+
+QT_BEGIN_NAMESPACE
+
+/*!
+ \class QCameraFlashControl
+
+ \brief The QCameraFlashControl class allows controlling a camera's flash.
+
+ \ingroup multimedia-serv
+ \inmodule QtMultimedia
+ \since 1.1
+
+ \inmodule QtMultimedia
+
+ You can set the type of flash effect used when an image is captured, and test to see
+ if the flash hardware is ready to fire.
+
+ You can retrieve this control from the camera object in the usual way:
+
+ Some camera devices may not have flash hardware, or may not be configurable. In that
+ case, there will be no QCameraFlashControl available.
+
+ The interface name of QCameraFlashControl is \c com.nokia.Qt.QCameraFlashControl/1.0 as
+ defined in QCameraFlashControl_iid.
+
+ \sa QCamera
+*/
+
+/*!
+ \macro QCameraFlashControl_iid
+
+ \c com.nokia.Qt.QCameraFlashControl/1.0
+
+ Defines the interface name of the QCameraFlashControl class.
+
+ \relates QCameraFlashControl
+*/
+
+/*!
+ Constructs a camera flash control object with \a parent.
+*/
+QCameraFlashControl::QCameraFlashControl(QObject *parent):
+ QMediaControl(*new QMediaControlPrivate, parent)
+{
+}
+
+/*!
+ Destroys the camera control object.
+*/
+QCameraFlashControl::~QCameraFlashControl()
+{
+}
+
+/*!
+ \fn QCamera::FlashModes QCameraFlashControl::flashMode() const
+
+ Returns the current flash mode.
+ \since 1.1
+*/
+
+/*!
+ \fn void QCameraFlashControl::setFlashMode(QCameraExposure::FlashModes mode)
+
+ Set the current flash \a mode.
+
+ Usually a single QCameraExposure::FlashMode flag is used,
+ but some non conflicting flags combination are also allowed,
+ like QCameraExposure::FlashManual | QCameraExposure::FlashSlowSyncRearCurtain.
+ \since 1.1
+*/
+
+
+/*!
+ \fn QCameraFlashControl::isFlashModeSupported(QCameraExposure::FlashModes mode) const
+
+ Return true if the reqested flash \a mode is supported.
+ Some QCameraExposure::FlashMode values can be combined,
+ for example QCameraExposure::FlashManual | QCameraExposure::FlashSlowSyncRearCurtain
+ \since 1.1
+*/
+
+/*!
+ \fn bool QCameraFlashControl::isFlashReady() const
+
+ Returns true if flash is charged.
+ \since 1.1
+*/
+
+/*!
+ \fn void QCameraFlashControl::flashReady(bool ready)
+
+ Signal emitted when flash state changes to \a ready.
+ \since 1.1
+*/
+
+#include "moc_qcameraflashcontrol.cpp"
+QT_END_NAMESPACE
+
diff --git a/src/multimedia/controls/qcameraflashcontrol.h b/src/multimedia/controls/qcameraflashcontrol.h
new file mode 100644
index 000000000..89b3b9d06
--- /dev/null
+++ b/src/multimedia/controls/qcameraflashcontrol.h
@@ -0,0 +1,87 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QCAMERAFLASHCONTROL_H
+#define QCAMERAFLASHCONTROL_H
+
+#include <qmediacontrol.h>
+#include <qmediaobject.h>
+
+#include <qcameraexposure.h>
+#include <qcamera.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Multimedia)
+
+
+class Q_MULTIMEDIA_EXPORT QCameraFlashControl : public QMediaControl
+{
+ Q_OBJECT
+
+public:
+ ~QCameraFlashControl();
+
+ virtual QCameraExposure::FlashModes flashMode() const = 0;
+ virtual void setFlashMode(QCameraExposure::FlashModes mode) = 0;
+ virtual bool isFlashModeSupported(QCameraExposure::FlashModes mode) const = 0;
+
+ virtual bool isFlashReady() const = 0;
+
+Q_SIGNALS:
+ void flashReady(bool);
+
+protected:
+ QCameraFlashControl(QObject* parent = 0);
+};
+
+#define QCameraFlashControl_iid "com.nokia.Qt.QCameraFlashControl/1.0"
+Q_MEDIA_DECLARE_CONTROL(QCameraFlashControl, QCameraFlashControl_iid)
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+
+#endif // QCAMERAFLASHCONTROL_H
+
diff --git a/src/multimedia/controls/qcamerafocuscontrol.cpp b/src/multimedia/controls/qcamerafocuscontrol.cpp
new file mode 100644
index 000000000..93c466814
--- /dev/null
+++ b/src/multimedia/controls/qcamerafocuscontrol.cpp
@@ -0,0 +1,253 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qcamerafocuscontrol.h>
+#include "qmediacontrol_p.h"
+
+QT_BEGIN_NAMESPACE
+
+/*!
+ \class QCameraFocusControl
+
+
+ \brief The QCameraFocusControl class supplies control for
+ focusing related camera parameters.
+
+ \inmodule QtMultimedia
+ \ingroup multimedia-serv
+ \since 1.1
+
+ The interface name of QCameraFocusControl is \c com.nokia.Qt.QCameraFocusControl/1.0 as
+ defined in QCameraFocusControl_iid.
+
+
+ \sa QMediaService::requestControl(), QCamera
+*/
+
+/*!
+ \macro QCameraFocusControl_iid
+
+ \c com.nokia.Qt.QCameraFocusControl/1.0
+
+ Defines the interface name of the QCameraFocusControl class.
+
+ \relates QCameraFocusControl
+*/
+
+/*!
+ Constructs a camera control object with \a parent.
+*/
+
+QCameraFocusControl::QCameraFocusControl(QObject *parent):
+ QMediaControl(*new QMediaControlPrivate, parent)
+{
+}
+
+/*!
+ Destruct the camera control object.
+*/
+
+QCameraFocusControl::~QCameraFocusControl()
+{
+}
+
+
+/*!
+ \fn QCameraFocus::FocusMode QCameraFocusControl::focusMode() const
+
+ Returns the focus mode being used.
+ \since 1.1
+*/
+
+
+/*!
+ \fn void QCameraFocusControl::setFocusMode(QCameraFocus::FocusMode mode)
+
+ Set the focus mode to \a mode.
+ \since 1.1
+*/
+
+
+/*!
+ \fn bool QCameraFocusControl::isFocusModeSupported(QCameraFocus::FocusMode mode) const
+
+ Returns true if focus \a mode is supported.
+ \since 1.1
+*/
+
+
+/*!
+ \fn qreal QCameraFocusControl::maximumOpticalZoom() const
+
+ Returns the maximum optical zoom value, or 1.0 if optical zoom is not supported.
+ \since 1.1
+*/
+
+
+/*!
+ \fn qreal QCameraFocusControl::maximumDigitalZoom() const
+
+ Returns the maximum digital zoom value, or 1.0 if digital zoom is not supported.
+ \since 1.1
+*/
+
+
+/*!
+ \fn qreal QCameraFocusControl::opticalZoom() const
+
+ Return the current optical zoom value.
+ \since 1.1
+*/
+
+/*!
+ \fn qreal QCameraFocusControl::digitalZoom() const
+
+ Return the current digital zoom value.
+ \since 1.1
+*/
+
+
+/*!
+ \fn void QCameraFocusControl::zoomTo(qreal optical, qreal digital)
+
+ Sets \a optical and \a digital zoom values.
+ \since 1.1
+*/
+
+/*!
+ \fn QCameraFocusControl::focusPointMode() const
+
+ Returns the camera focus point selection mode.
+ \since 1.1
+*/
+
+/*!
+ \fn QCameraFocusControl::setFocusPointMode(QCameraFocus::FocusPointMode mode)
+
+ Sets the camera focus point selection \a mode.
+ \since 1.1
+*/
+
+/*!
+ \fn QCameraFocusControl::isFocusPointModeSupported(QCameraFocus::FocusPointMode mode) const
+
+ Returns true if the camera focus point \a mode is supported.
+ \since 1.1
+*/
+
+/*!
+ \fn QCameraFocusControl::customFocusPoint() const
+
+ Return the position of custom focus point, in relative frame coordinates:
+ QPointF(0,0) points to the left top frame point, QPointF(0.5,0.5) points to the frame center.
+
+ Custom focus point is used only in FocusPointCustom focus mode.
+ \since 1.1
+*/
+
+/*!
+ \fn QCameraFocusControl::setCustomFocusPoint(const QPointF &point)
+
+ Sets the custom focus \a point.
+
+ If camera supports fixed set of focus points,
+ it should use the nearest supported focus point,
+ and return the actual focus point with QCameraFocusControl::focusZones().
+
+ \since 1.1
+ \sa QCameraFocusControl::customFocusPoint(), QCameraFocusControl::focusZones()
+*/
+
+/*!
+ \fn QCameraFocusControl::focusZones() const
+
+ Returns the list of zones, the camera is using for focusing or focused on.
+ \since 1.1
+*/
+
+/*!
+ \fn void QCameraFocusControl::opticalZoomChanged(qreal zoom)
+
+ Signal emitted when the optical \a zoom value changed.
+ \since 1.1
+*/
+
+/*!
+ \fn void QCameraFocusControl::digitalZoomChanged(qreal zoom)
+
+ Signal emitted when the digital \a zoom value changed.
+ \since 1.1
+*/
+
+/*!
+ \fn void QCameraFocusControl::maximumOpticalZoomChanged(qreal zoom)
+
+ Signal emitted when the maximum supported optical \a zoom value changed.
+ \since 1.1
+*/
+
+/*!
+ \fn void QCameraFocusControl::maximumDigitalZoomChanged(qreal zoom)
+
+ Signal emitted when the maximum supported digital \a zoom value changed.
+
+ The maximum supported zoom value can depend on other camera settings,
+ like capture mode or resolution.
+ \since 1.1
+*/
+
+
+/*!
+ \fn QCameraFocusControl::focusZonesChanged()
+
+ Signal is emitted when the set of zones, camera focused on is changed.
+
+ Usually the zones list is changed when the camera is focused.
+
+ \since 1.1
+ \sa QCameraFocusControl::focusZones()
+*/
+
+
+
+#include "moc_qcamerafocuscontrol.cpp"
+QT_END_NAMESPACE
+
diff --git a/src/multimedia/controls/qcamerafocuscontrol.h b/src/multimedia/controls/qcamerafocuscontrol.h
new file mode 100644
index 000000000..20ffe6af1
--- /dev/null
+++ b/src/multimedia/controls/qcamerafocuscontrol.h
@@ -0,0 +1,103 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QCAMERAFOCUSCONTROL_H
+#define QCAMERAFOCUSCONTROL_H
+
+#include <qmediacontrol.h>
+#include <qmediaobject.h>
+
+#include <qcamerafocus.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Multimedia)
+
+
+class Q_MULTIMEDIA_EXPORT QCameraFocusControl : public QMediaControl
+{
+ Q_OBJECT
+
+public:
+ ~QCameraFocusControl();
+
+ virtual QCameraFocus::FocusMode focusMode() const = 0;
+ virtual void setFocusMode(QCameraFocus::FocusMode mode) = 0;
+ virtual bool isFocusModeSupported(QCameraFocus::FocusMode mode) const = 0;
+
+ virtual qreal maximumOpticalZoom() const = 0;
+ virtual qreal maximumDigitalZoom() const = 0;
+ virtual qreal opticalZoom() const = 0;
+ virtual qreal digitalZoom() const = 0;
+
+ virtual void zoomTo(qreal optical, qreal digital) = 0;
+
+ virtual QCameraFocus::FocusPointMode focusPointMode() const = 0;
+ virtual void setFocusPointMode(QCameraFocus::FocusPointMode mode) = 0;
+ virtual bool isFocusPointModeSupported(QCameraFocus::FocusPointMode mode) const = 0;
+ virtual QPointF customFocusPoint() const = 0;
+ virtual void setCustomFocusPoint(const QPointF &point) = 0;
+
+ virtual QCameraFocusZoneList focusZones() const = 0;
+
+Q_SIGNALS:
+ void opticalZoomChanged(qreal opticalZoom);
+ void digitalZoomChanged(qreal digitalZoom);
+ void focusZonesChanged();
+ void maximumOpticalZoomChanged(qreal);
+ void maximumDigitalZoomChanged(qreal);
+
+protected:
+ QCameraFocusControl(QObject* parent = 0);
+};
+
+#define QCameraFocusControl_iid "com.nokia.Qt.QCameraFocusingControl/1.0"
+Q_MEDIA_DECLARE_CONTROL(QCameraFocusControl, QCameraFocusControl_iid)
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+
+#endif // QCAMERAFOCUSCONTROL_H
+
diff --git a/src/multimedia/controls/qcameraimagecapturecontrol.cpp b/src/multimedia/controls/qcameraimagecapturecontrol.cpp
new file mode 100644
index 000000000..ad4c55edb
--- /dev/null
+++ b/src/multimedia/controls/qcameraimagecapturecontrol.cpp
@@ -0,0 +1,208 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qcameraimagecapturecontrol.h>
+#include <QtCore/qstringlist.h>
+
+QT_BEGIN_NAMESPACE
+
+/*!
+ \class QCameraImageCaptureControl
+
+ \brief The QCameraImageCaptureControl class provides a control interface
+ for image capture services.
+
+ \inmodule QtMultimedia
+ \ingroup multimedia-serv
+ \since 1.1
+
+
+
+ The interface name of QCameraImageCaptureControl is \c com.nokia.Qt.QCameraImageCaptureControl/1.0 as
+ defined in QCameraImageCaptureControl_iid.
+
+
+ \sa QMediaService::requestControl()
+*/
+
+/*!
+ \macro QCameraImageCaptureControl_iid
+
+ \c com.nokia.Qt.QCameraImageCaptureControl/1.0
+
+ Defines the interface name of the QCameraImageCaptureControl class.
+
+ \relates QCameraImageCaptureControl
+*/
+
+/*!
+ Constructs a new image capture control object with the given \a parent
+*/
+QCameraImageCaptureControl::QCameraImageCaptureControl(QObject *parent)
+ :QMediaControl(parent)
+{
+}
+
+/*!
+ Destroys an image capture control.
+*/
+QCameraImageCaptureControl::~QCameraImageCaptureControl()
+{
+}
+
+/*!
+ \fn QCameraImageCaptureControl::isReadyForCapture() const
+
+ Identifies if a capture control is ready to perform a capture
+ immediately (all the resources necessary for image capture are allocated,
+ hardware initialized, flash is charged, etc).
+
+ Returns true if the camera is ready for capture; and false if it is not.
+ \since 1.1
+*/
+
+/*!
+ \fn QCameraImageCaptureControl::readyForCaptureChanged(bool ready)
+
+ Signals that a capture control's \a ready state has changed.
+ \since 1.1
+*/
+
+/*!
+ \fn QCameraImageCaptureControl::capture(const QString &fileName)
+
+ Initiates the capture of an image to \a fileName.
+ The \a fileName can be relative or empty,
+ in this case the service should use the system specific place
+ and file naming scheme.
+
+ Returns the capture request id number, which is used later
+ with imageExposed(), imageCaptured() and imageSaved() signals.
+ \since 1.1
+*/
+
+/*!
+ \fn QCameraImageCaptureControl::cancelCapture()
+
+ Cancel pending capture requests.
+ \since 1.1
+*/
+
+/*!
+ \fn QCameraImageCaptureControl::imageExposed(int requestId)
+
+ Signals that an image with it \a requestId
+ has just been exposed.
+ This signal can be used for the shutter sound or other indicaton.
+ \since 1.1
+*/
+
+/*!
+ \fn QCameraImageCaptureControl::imageCaptured(int requestId, const QImage &preview)
+
+ Signals that an image with it \a requestId
+ has been captured and a \a preview is available.
+ \since 1.1
+*/
+
+/*!
+ \fn QCameraImageCaptureControl::imageMetadataAvailable(int id, QtMultimedia::MetaData key, const QVariant &value)
+
+ Signals that a metadata for an image with request \a id is available.
+ This signal is emitted for metadata \a value with a \a key listed in QtMultimedia::MetaData enum.
+
+ This signal should be emitted between imageExposed and imageSaved signals.
+ \since 1.2
+*/
+
+/*!
+ \fn QCameraImageCaptureControl::imageMetadataAvailable(int id, const QString &key, const QVariant &value)
+
+ Signals that a metadata for an image with request \a id is available.
+ This signal is emitted for extended metadata \a value with a \a key not listed in QtMultimedia::MetaData enum.
+
+ This signal should be emitted between imageExposed and imageSaved signals.
+ \since 1.2
+*/
+
+/*!
+ \fn QCameraImageCaptureControl::imageAvailable(int requestId, const QVideoFrame &buffer)
+
+ Signals that a captured \a buffer with a \a requestId is available.
+ \since 1.2
+*/
+
+/*!
+ \fn QCameraImageCaptureControl::imageSaved(int requestId, const QString &fileName)
+
+ Signals that a captured image with a \a requestId has been saved
+ to \a fileName.
+ \since 1.1
+*/
+
+/*!
+ \fn QCameraImageCaptureControl::driveMode() const
+
+ Returns the current camera drive mode.
+ \since 1.1
+*/
+
+/*!
+ \fn QCameraImageCaptureControl::setDriveMode(QCameraImageCapture::DriveMode mode)
+
+ Sets the current camera drive \a mode.
+ \since 1.1
+*/
+
+
+/*!
+ \fn QCameraImageCaptureControl::error(int id, int error, const QString &errorString)
+
+ Signals the capture request \a id failed with \a error code and message \a errorString.
+
+ \since 1.1
+ \sa QCameraImageCapture::Error
+*/
+
+
+#include "moc_qcameraimagecapturecontrol.cpp"
+QT_END_NAMESPACE
+
diff --git a/src/multimedia/controls/qcameraimagecapturecontrol.h b/src/multimedia/controls/qcameraimagecapturecontrol.h
new file mode 100644
index 000000000..0459c1417
--- /dev/null
+++ b/src/multimedia/controls/qcameraimagecapturecontrol.h
@@ -0,0 +1,99 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QCAMERAIMAGECAPTURECONTROL_H
+#define QCAMERAIMAGECAPTURECONTROL_H
+
+#include <qmediacontrol.h>
+#include <qcameraimagecapture.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Multimedia)
+
+class QImage;
+QT_END_NAMESPACE
+
+QT_BEGIN_NAMESPACE
+
+class Q_MULTIMEDIA_EXPORT QCameraImageCaptureControl : public QMediaControl
+{
+ Q_OBJECT
+
+public:
+ ~QCameraImageCaptureControl();
+
+ virtual bool isReadyForCapture() const = 0;
+
+ virtual QCameraImageCapture::DriveMode driveMode() const = 0;
+ virtual void setDriveMode(QCameraImageCapture::DriveMode mode) = 0;
+
+ virtual int capture(const QString &fileName) = 0;
+ virtual void cancelCapture() = 0;
+
+Q_SIGNALS:
+ void readyForCaptureChanged(bool);
+
+ void imageExposed(int id);
+ void imageCaptured(int id, const QImage &preview);
+ void imageMetadataAvailable(int id, QtMultimedia::MetaData key, const QVariant &value);
+ void imageMetadataAvailable(int id, const QString &key, const QVariant &value);
+ void imageAvailable(int id, const QVideoFrame &buffer);
+ void imageSaved(int id, const QString &fileName);
+
+ void error(int id, int error, const QString &errorString);
+
+protected:
+ QCameraImageCaptureControl(QObject* parent = 0);
+};
+
+#define QCameraImageCaptureControl_iid "com.nokia.Qt.QCameraImageCaptureControl/1.0"
+Q_MEDIA_DECLARE_CONTROL(QCameraImageCaptureControl, QCameraImageCaptureControl_iid)
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+
+#endif // QCAMERAIMAGECAPTURECONTROL_H
+
diff --git a/src/multimedia/controls/qcameraimageprocessingcontrol.cpp b/src/multimedia/controls/qcameraimageprocessingcontrol.cpp
new file mode 100644
index 000000000..fb72a16fb
--- /dev/null
+++ b/src/multimedia/controls/qcameraimageprocessingcontrol.cpp
@@ -0,0 +1,181 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qcameraimageprocessingcontrol.h>
+#include "qmediacontrol_p.h"
+
+QT_BEGIN_NAMESPACE
+
+namespace
+{
+ class QCameraImageProcessingControlPrivateRegisterMetaTypes
+ {
+ public:
+ QCameraImageProcessingControlPrivateRegisterMetaTypes()
+ {
+ qRegisterMetaType<QCameraImageProcessingControl::ProcessingParameter>();
+ }
+ } _registerMetaTypes;
+}
+
+/*!
+ \class QCameraImageProcessingControl
+ \inmodule QtMultimedia
+ \ingroup multimedia-serv
+ \since 1.1
+
+
+ \brief The QCameraImageProcessingControl class provides an abstract class
+ for controlling image processing parameters, like white balance,
+ contrast, saturation, sharpening and denoising.
+
+ The interface name of QCameraImageProcessingControl is \c com.nokia.Qt.QCameraImageProcessingControl/1.0 as
+ defined in QCameraImageProcessingControl_iid.
+
+
+
+ \sa QMediaService::requestControl(), QCamera
+*/
+
+/*!
+ \macro QCameraImageProcessingControl_iid
+
+ \c com.nokia.Qt.QCameraImageProcessingControl/1.0
+
+ Defines the interface name of the QCameraImageProcessingControl class.
+
+ \relates QCameraImageProcessingControl
+*/
+
+/*!
+ Constructs an image processing control object with \a parent.
+*/
+
+QCameraImageProcessingControl::QCameraImageProcessingControl(QObject *parent):
+ QMediaControl(*new QMediaControlPrivate, parent)
+{
+}
+
+/*!
+ Destruct the image processing control object.
+*/
+
+QCameraImageProcessingControl::~QCameraImageProcessingControl()
+{
+}
+
+
+/*!
+ \fn QCameraImageProcessingControl::whiteBalanceMode() const
+ Return the white balance mode being used.
+ \since 1.1
+*/
+
+/*!
+ \fn QCameraImageProcessingControl::setWhiteBalanceMode(QCameraImageProcessing::WhiteBalanceMode mode)
+ Set the white balance mode to \a mode
+ \since 1.1
+*/
+
+/*!
+ \fn QCameraImageProcessingControl::isWhiteBalanceModeSupported(QCameraImageProcessing::WhiteBalanceMode mode) const
+ Returns true if the white balance \a mode is supported.
+ The backend should support at least QCameraImageProcessing::WhiteBalanceAuto mode.
+ \since 1.1
+*/
+
+/*!
+ \fn bool QCameraImageProcessingControl::isProcessingParameterSupported(ProcessingParameter parameter) const
+
+ Returns true if the camera supports adjusting image processing \a parameter.
+
+ Usually the the supported settings is static,
+ but some parameter may not be available depending on other
+ camera settings, like presets.
+ In such case the currently supported parameters should be returned.
+ \since 1.1
+*/
+
+/*!
+ \fn QCameraImageProcessingControl::processingParameter(ProcessingParameter parameter) const
+ Returns the image processing \a parameter value.
+ \since 1.1
+*/
+
+/*!
+ \fn QCameraImageProcessingControl::setProcessingParameter(ProcessingParameter parameter, QVariant value)
+
+ Sets the image processing \a parameter \a value.
+ Passing the null or invalid QVariant value allows
+ backend to choose the suitable parameter value.
+
+ The valid values range depends on the parameter type,
+ for contrast, saturation and brightness value should be
+ between -100 and 100, the default is 0,
+
+ For sharpening and denoising the range is 0..100,
+ 0 for sharpening or denoising disabled
+ and 100 for maximum sharpening/denoising applied.
+ \since 1.1
+*/
+
+/*!
+ \enum QCameraImageProcessingControl::ProcessingParameter
+
+ \value Contrast
+ Image contrast.
+ \value Saturation
+ Image saturation.
+ \value Brightness
+ Image brightness.
+ \value Sharpening
+ Amount of sharpening applied.
+ \value Denoising
+ Amount of denoising applied.
+ \value ColorTemperature
+ Color temperature in K. This value is used when the manual white balance mode is selected.
+ \value ExtendedParameter
+ The base value for platform specific extended parameters.
+ */
+
+#include "moc_qcameraimageprocessingcontrol.cpp"
+QT_END_NAMESPACE
+
diff --git a/src/multimedia/controls/qcameraimageprocessingcontrol.h b/src/multimedia/controls/qcameraimageprocessingcontrol.h
new file mode 100644
index 000000000..8c739287c
--- /dev/null
+++ b/src/multimedia/controls/qcameraimageprocessingcontrol.h
@@ -0,0 +1,100 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QCAMERAIMAGEPROCESSINGCONTROL_H
+#define QCAMERAIMAGEPROCESSINGCONTROL_H
+
+#include <qmediacontrol.h>
+#include <qmediaobject.h>
+
+#include <qcamera.h>
+#include <qmediaenumdebug.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Multimedia)
+
+
+class Q_MULTIMEDIA_EXPORT QCameraImageProcessingControl : public QMediaControl
+{
+ Q_OBJECT
+ Q_ENUMS(ProcessingParameter)
+
+public:
+ ~QCameraImageProcessingControl();
+
+ enum ProcessingParameter {
+ Contrast = 0,
+ Saturation = 1,
+ Brightness = 2,
+ Sharpening = 3,
+ Denoising = 4,
+ ColorTemperature = 5,
+ ExtendedParameter = 1000
+ };
+
+ virtual QCameraImageProcessing::WhiteBalanceMode whiteBalanceMode() const = 0;
+ virtual void setWhiteBalanceMode(QCameraImageProcessing::WhiteBalanceMode mode) = 0;
+ virtual bool isWhiteBalanceModeSupported(QCameraImageProcessing::WhiteBalanceMode) const = 0;
+
+ virtual bool isProcessingParameterSupported(ProcessingParameter) const = 0;
+ virtual QVariant processingParameter(ProcessingParameter parameter) const = 0;
+ virtual void setProcessingParameter(ProcessingParameter parameter, QVariant value) = 0;
+
+protected:
+ QCameraImageProcessingControl(QObject* parent = 0);
+};
+
+#define QCameraImageProcessingControl_iid "com.nokia.Qt.QCameraImageProcessingControl/1.0"
+Q_MEDIA_DECLARE_CONTROL(QCameraImageProcessingControl, QCameraImageProcessingControl_iid)
+
+QT_END_NAMESPACE
+
+Q_DECLARE_METATYPE(QCameraImageProcessingControl::ProcessingParameter)
+
+Q_MEDIA_ENUM_DEBUG(QCameraImageProcessingControl, ProcessingParameter)
+
+QT_END_HEADER
+
+#endif
+
diff --git a/src/multimedia/controls/qcameralockscontrol.cpp b/src/multimedia/controls/qcameralockscontrol.cpp
new file mode 100644
index 000000000..289a07bf5
--- /dev/null
+++ b/src/multimedia/controls/qcameralockscontrol.cpp
@@ -0,0 +1,134 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qcameralockscontrol.h>
+#include "qmediacontrol_p.h"
+
+QT_BEGIN_NAMESPACE
+
+/*!
+ \class QCameraLocksControl
+
+
+
+ \brief The QCameraLocksControl class is an abstract base class for
+ classes that control still cameras or video cameras.
+
+ \inmodule QtMultimedia
+ \ingroup multimedia-serv
+ \since 1.1
+
+ This service is provided by a QMediaService object via
+ QMediaService::control(). It is used by QCamera.
+
+ The interface name of QCameraLocksControl is \c com.nokia.Qt.QCameraLocksControl/1.0 as
+ defined in QCameraLocksControl_iid.
+
+
+ \sa QMediaService::requestControl(), QCamera
+*/
+
+/*!
+ \macro QCameraLocksControl_iid
+
+ \c com.nokia.Qt.QCameraLocksControl/1.0
+
+ Defines the interface name of the QCameraLocksControl class.
+
+ \relates QCameraLocksControl
+*/
+
+/*!
+ Constructs a camera locks control object with \a parent.
+*/
+
+QCameraLocksControl::QCameraLocksControl(QObject *parent):
+ QMediaControl(*new QMediaControlPrivate, parent)
+{
+}
+
+/*!
+ Destruct the camera locks control object.
+*/
+
+QCameraLocksControl::~QCameraLocksControl()
+{
+}
+
+/*!
+ \fn QCameraLocksControl::supportedLocks() const
+
+ Returns the lock types, the camera supports.
+ \since 1.1
+*/
+
+/*!
+ \fn QCameraLocksControl::lockStatus(QCamera::LockType lock) const
+
+ Returns the camera \a lock status.
+ \since 1.1
+*/
+
+/*!
+ \fn QCameraLocksControl::searchAndLock(QCamera::LockTypes locks)
+
+ Request camera \a locks.
+ \since 1.1
+*/
+
+/*!
+ \fn QCameraLocksControl::unlock(QCamera::LockTypes locks)
+
+ Unlock camera \a locks.
+ \since 1.1
+*/
+
+/*!
+ \fn QCameraLocksControl::lockStatusChanged(QCamera::LockType lock, QCamera::LockStatus status, QCamera::LockChangeReason reason)
+
+ Signals the \a lock \a status was changed with a specified \a reason.
+ \since 1.1
+*/
+
+
+
+#include "moc_qcameralockscontrol.cpp"
+QT_END_NAMESPACE
diff --git a/src/multimedia/controls/qcameralockscontrol.h b/src/multimedia/controls/qcameralockscontrol.h
new file mode 100644
index 000000000..93120ee1a
--- /dev/null
+++ b/src/multimedia/controls/qcameralockscontrol.h
@@ -0,0 +1,86 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QCAMERALOCKSCONTROL_H
+#define QCAMERALOCKSCONTROL_H
+
+#include <qmediacontrol.h>
+#include <qmediaobject.h>
+
+#include <qcamera.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Multimedia)
+
+
+class Q_MULTIMEDIA_EXPORT QCameraLocksControl : public QMediaControl
+{
+ Q_OBJECT
+public:
+ ~QCameraLocksControl();
+
+ virtual QCamera::LockTypes supportedLocks() const = 0;
+
+ virtual QCamera::LockStatus lockStatus(QCamera::LockType lock) const = 0;
+
+ virtual void searchAndLock(QCamera::LockTypes locks) = 0;
+ virtual void unlock(QCamera::LockTypes locks) = 0;
+
+Q_SIGNALS:
+ void lockStatusChanged(QCamera::LockType type, QCamera::LockStatus status, QCamera::LockChangeReason reason);
+
+protected:
+ QCameraLocksControl(QObject* parent = 0);
+};
+
+#define QCameraLocksControl_iid "com.nokia.Qt.QCameraLocksControl/1.0"
+Q_MEDIA_DECLARE_CONTROL(QCameraLocksControl, QCameraLocksControl_iid)
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+
+#endif // QCAMERALOCKSCONTROL_H
+
diff --git a/src/multimedia/controls/qimageencodercontrol.cpp b/src/multimedia/controls/qimageencodercontrol.cpp
new file mode 100644
index 000000000..ee62a502d
--- /dev/null
+++ b/src/multimedia/controls/qimageencodercontrol.cpp
@@ -0,0 +1,142 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qimageencodercontrol.h"
+#include <QtCore/qstringlist.h>
+
+QT_BEGIN_NAMESPACE
+
+/*!
+ \class QImageEncoderControl
+
+ \inmodule QtMultimedia
+ \ingroup multimedia-serv
+ \since 1.0
+
+ \brief The QImageEncoderControl class provides access to the settings of a media service that
+ performs image encoding.
+
+ If a QMediaService supports encoding image data it will implement QImageEncoderControl.
+ This control allows to \l {setImageSettings()}{set image encoding settings} and
+ provides functions for quering supported image \l {supportedImageCodecs()}{codecs} and
+ \l {supportedResolutions()}{resolutions}.
+
+ The interface name of QImageEncoderControl is \c com.nokia.Qt.QImageEncoderControl/1.0 as
+ defined in QImageEncoderControl_iid.
+
+ \sa QImageEncoderSettings, QMediaService::requestControl()
+*/
+
+/*!
+ \macro QImageEncoderControl_iid
+
+ \c com.nokia.Qt.QImageEncoderControl/1.0
+
+ Defines the interface name of the QImageEncoderControl class.
+
+ \relates QImageEncoderControl
+*/
+
+/*!
+ Constructs a new image encoder control object with the given \a parent
+*/
+QImageEncoderControl::QImageEncoderControl(QObject *parent)
+ :QMediaControl(parent)
+{
+}
+
+/*!
+ Destroys the image encoder control.
+*/
+QImageEncoderControl::~QImageEncoderControl()
+{
+}
+
+/*!
+ \fn QImageEncoderControl::supportedResolutions(const QImageEncoderSettings &settings = QImageEncoderSettings(),
+ bool *continuous = 0) const
+
+ Returns a list of supported resolutions.
+
+ If non null image \a settings parameter is passed,
+ the returned list is reduced to resolutions supported with partial settings applied.
+ It can be used to query the list of resolutions, supported by specific image codec.
+
+ If the encoder supports arbitrary resolutions within the supported resolutions range,
+ *\a continuous is set to true, otherwise *\a continuous is set to false.
+ \since 1.0
+*/
+
+/*!
+ \fn QImageEncoderControl::supportedImageCodecs() const
+
+ Returns a list of supported image codecs.
+ \since 1.0
+*/
+
+/*!
+ \fn QImageEncoderControl::imageCodecDescription(const QString &codec) const
+
+ Returns a description of an image \a codec.
+ \since 1.0
+*/
+
+/*!
+ \fn QImageEncoderControl::imageSettings() const
+
+ Returns the currently used image encoder settings.
+
+ The returned value may be different tha passed to QImageEncoderControl::setImageSettings()
+ if the settings contains the default or undefined parameters.
+ In this case if the undefined parameters are already resolved, they should be returned.
+ \since 1.0
+*/
+
+/*!
+ \fn QImageEncoderControl::setImageSettings(const QImageEncoderSettings &settings)
+
+ Sets the selected image encoder \a settings.
+ \since 1.0
+*/
+
+#include "moc_qimageencodercontrol.cpp"
+QT_END_NAMESPACE
+
diff --git a/src/multimedia/controls/qimageencodercontrol.h b/src/multimedia/controls/qimageencodercontrol.h
new file mode 100644
index 000000000..c8a8261a4
--- /dev/null
+++ b/src/multimedia/controls/qimageencodercontrol.h
@@ -0,0 +1,91 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QIMAGEENCODERCONTROL_H
+#define QIMAGEENCODERCONTROL_H
+
+#include "qmediacontrol.h"
+#include "qmediarecorder.h"
+#include "qmediaencodersettings.h"
+
+#include <QtCore/qsize.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Multimedia)
+
+class QByteArray;
+class QStringList;
+QT_END_NAMESPACE
+
+QT_BEGIN_NAMESPACE
+
+class Q_MULTIMEDIA_EXPORT QImageEncoderControl : public QMediaControl
+{
+ Q_OBJECT
+
+public:
+ virtual ~QImageEncoderControl();
+
+ virtual QStringList supportedImageCodecs() const = 0;
+ virtual QString imageCodecDescription(const QString &codecName) const = 0;
+
+ virtual QList<QSize> supportedResolutions(const QImageEncoderSettings &settings,
+ bool *continuous = 0) const = 0;
+
+ virtual QImageEncoderSettings imageSettings() const = 0;
+ virtual void setImageSettings(const QImageEncoderSettings &settings) = 0;
+
+protected:
+ QImageEncoderControl(QObject *parent = 0);
+};
+
+#define QImageEncoderControl_iid "com.nokia.Qt.QImageEncoderControl/1.0"
+Q_MEDIA_DECLARE_CONTROL(QImageEncoderControl, QImageEncoderControl_iid)
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+
+#endif
diff --git a/src/multimedia/controls/qmediabackgroundplaybackcontrol.cpp b/src/multimedia/controls/qmediabackgroundplaybackcontrol.cpp
new file mode 100644
index 000000000..d7cbd380a
--- /dev/null
+++ b/src/multimedia/controls/qmediabackgroundplaybackcontrol.cpp
@@ -0,0 +1,149 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qmediabackgroundplaybackcontrol.h"
+#include "qmediacontrol_p.h"
+
+QT_BEGIN_NAMESPACE
+
+
+/*!
+ \class QMediaBackgroundPlaybackControl
+ \inmodule QtMultimedia
+ \ingroup multimedia
+ \since 5.0
+
+
+ \brief The QMediaBackgroundPlaybackControl class provides access to the background playback
+ related control of a QMediaService.
+
+ If a QMediaService can play media in background, it should implement QMediaBackgroundPlaybackControl.
+ This control provides a means to set the \l {setContextId()}{contextId} for application,
+ \l {acquire()}{acquire the resource for playback} and \l {release()} {release the playback resource}.
+
+ The interface name of QMediaBackgroundPlaybackControl is \c com.nokia.Qt.QMediaBackgroundPlaybackControl/1.0 as
+ defined in QMediaBackgroundPlaybackControl_iid.
+
+ \sa QMediaService::requestControl(), QMediaPlayer
+*/
+
+/*!
+ \macro QMediaBackgroundPlaybackControl_iid
+
+ \c com.nokia.Qt.QMediaBackgroundPlaybackControl/1.0
+
+ Defines the interface name of the QMediaBackgroundPlaybackControl class.
+
+ \relates QMediaBackgroundPlaybackControl
+*/
+
+/*!
+ Destroys a media background playback control.
+*/
+QMediaBackgroundPlaybackControl::~QMediaBackgroundPlaybackControl()
+{
+}
+
+/*!
+ Constructs a new media background playback control with the given \a parent.
+*/
+QMediaBackgroundPlaybackControl::QMediaBackgroundPlaybackControl(QObject *parent):
+ QMediaControl(*new QMediaControlPrivate, parent)
+{
+}
+
+/*!
+ \fn QMediaBackgroundPlaybackControl::setContextId(const QString& contextId)
+
+ Sets the contextId for the application, the last contextId will be released if previously set.
+ \l {acquire()}{acquire method} will be automatically invoked after setting a new contextId.
+
+ contextId is an unique string set by the application and is used by the background daemon to
+ distinguish and manage different context for different application.
+
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaBackgroundPlaybackControl::acquire()
+
+ Try to acquire the playback resource for current application
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaBackgroundPlaybackControl::release()
+
+ Give up the playback resource if current applicaiton holds it.
+ \since 1.0
+*/
+
+/*!
+ \property QMediaBackgroundPlaybackControl::isAcquired()
+ \brief indicate whether the background playback resource is granted or not
+
+ It may take sometime for the backend to actually update this value before the first use.
+
+ By default this property is false
+
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaBackgroundPlaybackControl::acquired()
+
+ Signals that the playback resource is acquired
+
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaBackgroundPlaybackControl::lost()
+
+ Signals that the playback resource is lost
+
+ \since 1.0
+*/
+
+#include "moc_qmediabackgroundplaybackcontrol.cpp"
+QT_END_NAMESPACE
+
+
diff --git a/src/multimedia/controls/qmediabackgroundplaybackcontrol.h b/src/multimedia/controls/qmediabackgroundplaybackcontrol.h
new file mode 100644
index 000000000..2cf8d1935
--- /dev/null
+++ b/src/multimedia/controls/qmediabackgroundplaybackcontrol.h
@@ -0,0 +1,83 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QMEDIABACKGROUNDPLAYBACKCONTROL_H
+#define QMEDIABACKGROUNDPLAYBACKCONTROL_H
+
+#include "qmediacontrol.h"
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Multimedia)
+
+
+class Q_MULTIMEDIA_EXPORT QMediaBackgroundPlaybackControl : public QMediaControl
+{
+ Q_OBJECT
+
+public:
+ virtual ~QMediaBackgroundPlaybackControl();
+
+ virtual void setContextId(const QString& contextId) = 0;
+ virtual void acquire() = 0;
+ virtual void release() = 0;
+
+ virtual bool isAcquired() const = 0;
+
+Q_SIGNALS:
+ void acquired();
+ void lost();
+
+protected:
+ QMediaBackgroundPlaybackControl(QObject* parent = 0);
+};
+
+#define QMediaBackgroundPlaybackControl_iid "com.nokia.Qt.QMediaBackgroundPlaybackControl/1.0"
+Q_MEDIA_DECLARE_CONTROL(QMediaBackgroundPlaybackControl, QMediaBackgroundPlaybackControl_iid)
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+
+#endif // QMEDIABACKGROUNDPLAYBACKCONTROL_H
diff --git a/src/multimedia/controls/qmediacontainercontrol.cpp b/src/multimedia/controls/qmediacontainercontrol.cpp
new file mode 100644
index 000000000..5a4e618f2
--- /dev/null
+++ b/src/multimedia/controls/qmediacontainercontrol.cpp
@@ -0,0 +1,126 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include "qmediacontainercontrol.h"
+
+QT_BEGIN_NAMESPACE
+
+/*!
+ \class QMediaContainerControl
+
+ \brief The QMediaContainerControl class provides access to the output container format of a QMediaService
+
+ \inmodule QtMultimedia
+ \ingroup multimedia-serv
+ \since 1.0
+
+ If a QMediaService supports writing encoded data it will implement
+ QMediaContainerControl. This control provides information about the output
+ containers supported by a media service and allows one to be selected as
+ the current output containers.
+
+ The functionality provided by this control is exposed to application code
+ through the QMediaRecorder class.
+
+ The interface name of QMediaContainerControl is \c com.nokia.Qt.QMediaContainerControl/1.0 as
+ defined in QMediaContainerControl_iid.
+
+ \sa QMediaService::requestControl(), QMediaRecorder
+*/
+
+/*!
+ \macro QMediaContainerControl_iid
+
+ \c com.nokia.Qt.QMediaContainerControl/1.0
+
+ Defines the interface name of the QMediaContainerControl class.
+
+ \relates QMediaContainerControl
+*/
+
+/*!
+ Constructs a new media container control with the given \a parent.
+*/
+QMediaContainerControl::QMediaContainerControl(QObject *parent)
+ :QMediaControl(parent)
+{
+}
+
+/*!
+ Destroys a media container control.
+*/
+QMediaContainerControl::~QMediaContainerControl()
+{
+}
+
+
+/*!
+ \fn QMediaContainerControl::supportedContainers() const
+
+ Returns a list of MIME types of supported container formats.
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaContainerControl::containerMimeType() const
+
+ Returns the MIME type of the selected container format.
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaContainerControl::setContainerMimeType(const QString &mimeType)
+
+ Sets the current container format to the format identified by the given \a mimeType.
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaContainerControl::containerDescription(const QString &mimeType) const
+
+ Returns a description of the container format identified by the given \a mimeType.
+ \since 1.0
+*/
+
+#include "moc_qmediacontainercontrol.cpp"
+QT_END_NAMESPACE
+
diff --git a/src/multimedia/controls/qmediacontainercontrol.h b/src/multimedia/controls/qmediacontainercontrol.h
new file mode 100644
index 000000000..af48605d0
--- /dev/null
+++ b/src/multimedia/controls/qmediacontainercontrol.h
@@ -0,0 +1,80 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#ifndef QMEDIACONTAINERCONTROL_H
+#define QMEDIACONTAINERCONTROL_H
+
+#include "qmediacontrol.h"
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Multimedia)
+
+
+class Q_MULTIMEDIA_EXPORT QMediaContainerControl : public QMediaControl
+{
+ Q_OBJECT
+
+public:
+ virtual ~QMediaContainerControl();
+
+ virtual QStringList supportedContainers() const = 0;
+ virtual QString containerMimeType() const = 0;
+ virtual void setContainerMimeType(const QString &formatMimeType) = 0;
+
+ virtual QString containerDescription(const QString &formatMimeType) const = 0;
+
+protected:
+ QMediaContainerControl(QObject *parent = 0);
+};
+
+#define QMediaContainerControl_iid "com.nokia.Qt.QMediaContainerControl/1.0"
+Q_MEDIA_DECLARE_CONTROL(QMediaContainerControl, QMediaContainerControl_iid)
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+
+#endif // QMEDIACONTAINERCONTROL_H
diff --git a/src/multimedia/controls/qmediagaplessplaybackcontrol.cpp b/src/multimedia/controls/qmediagaplessplaybackcontrol.cpp
new file mode 100644
index 000000000..84363e00c
--- /dev/null
+++ b/src/multimedia/controls/qmediagaplessplaybackcontrol.cpp
@@ -0,0 +1,165 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qmediagaplessplaybackcontrol.h"
+#include "qmediacontrol_p.h"
+
+/*!
+ \class QMediaGaplessPlaybackControl
+ \inmodule QtMultimedia
+ \ingroup multimedia
+ \since 5.0
+
+ \brief The QMediaGaplessPlaybackControl class provides access to the gapless playback
+ related control of a QMediaService.
+
+ If a QMediaService supports gapless playback it will implement QMediaGaplessPlaybackControl.
+ This control provides a means to set the \l {setNextMedia()}{next media} or
+ \l {setCrossfadeTime()}{crossfade time} for smooth transitions between tracks.
+
+ The functionality provided by this control is exposed to application
+ code through the QMediaPlayer class.
+
+ The interface name of QMediaGaplessPlaybackControl is
+ \c com.nokia.Qt.QMediaGaplessPlaybackControl/1.0 as defined in QMediaGaplessPlaybackControl_iid.
+
+ \sa QMediaService::requestControl(), QMediaPlayer
+*/
+
+/*!
+ \macro QMediaGaplessPlaybackControl_iid
+
+ \c com.nokia.Qt.QMediaGaplessPlaybackControl/1.0
+
+ Defines the interface name of the QMediaGaplessPlaybackControl class.
+
+ \relates QMediaGaplessPlaybackControl
+*/
+
+/*!
+ Destroys a gapless playback control.
+*/
+QMediaGaplessPlaybackControl::~QMediaGaplessPlaybackControl()
+{
+}
+
+/*!
+ Constructs a new gapless playback control with the given \a parent.
+*/
+QMediaGaplessPlaybackControl::QMediaGaplessPlaybackControl(QObject *parent):
+ QMediaControl(*new QMediaControlPrivate, parent)
+{
+}
+
+/*!
+ \fn QMediaGaplessPlaybackControl::nextMedia() const
+
+ Returns the content of the next media
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaGaplessPlaybackControl::setNextMedia(const QMediaContent& media)
+
+ Sets the next media for smooth transition.
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaGaplessPlaybackControl::nextMediaChanged(const QMediaContent& media)
+
+ Signals that the next media has changed (either explicitly via \l setNextMedia() or when the
+ player clears the next media while advancing to it).
+
+ \since 1.0
+ \sa nextMedia()
+*/
+
+/*!
+ \fn QMediaGaplessPlaybackControl::advancedToNextMedia()
+
+ Signals when the player advances to the next media (the content of next media will be cleared).
+
+ \since 1.0
+ \sa nextMedia()
+*/
+
+/*!
+ \fn QMediaGaplessPlaybackControl::isCrossfadeSupported() const
+
+ Indicates whether crossfading is supported or not.
+ If crossfading is not supported, \l setCrossfadTime() will be ignored and \l crossfadeTime() will
+ always return 0.
+
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaGaplessPlaybackControl::setCrossfadeTime(qreal crossfadeTime)
+
+ Sets the crossfade time in seconds for smooth transition.
+
+ Positive value means how much time it will take for the next media to transit from silent to
+ full volume and vice versa for current one. So both current and the next one will be playing
+ during this period of time.
+
+ A crossfade time of zero or negative will result in gapless playback (suitable for some
+ continuous media).
+
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaGaplessPlaybackControl::crossfadeTime() const
+
+ Returns current crossfade time in seconds.
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaGaplessPlaybackControl::crossfadeTimeChanged(qreal crossfadeTime)
+
+ Signals that the crossfade time has changed.
+
+ \since 1.0
+ \sa crossfadeTime()
+*/
+
diff --git a/src/multimedia/controls/qmediagaplessplaybackcontrol.h b/src/multimedia/controls/qmediagaplessplaybackcontrol.h
new file mode 100644
index 000000000..1ee548d6a
--- /dev/null
+++ b/src/multimedia/controls/qmediagaplessplaybackcontrol.h
@@ -0,0 +1,82 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef QMEDIAGAPLESSPLAYBACKCONTROL_H
+#define QMEDIAGAPLESSPLAYBACKCONTROL_H
+
+#include "qmediacontrol.h"
+#include "qmediacontent.h"
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Multimedia)
+
+class Q_MULTIMEDIA_EXPORT QMediaGaplessPlaybackControl : public QMediaControl
+{
+ Q_OBJECT
+public:
+ virtual ~QMediaGaplessPlaybackControl();
+
+ virtual QMediaContent nextMedia() const = 0;
+ virtual void setNextMedia(const QMediaContent &media) = 0;
+
+ virtual bool isCrossfadeSupported() const = 0;
+ virtual qreal crossfadeTime() const = 0;
+ virtual void setCrossfadeTime(qreal crossfadeTime) = 0;
+
+Q_SIGNALS:
+ void crossfadeTimeChanged(qreal crossfadeTime);
+ void nextMediaChanged(const QMediaContent& media);
+ void advancedToNextMedia();
+
+protected:
+ QMediaGaplessPlaybackControl(QObject* parent = 0);
+};
+
+#define QMediaGaplessPlaybackControl_iid "com.nokia.Qt.QMediaGaplessPlaybackControl/1.0"
+Q_MEDIA_DECLARE_CONTROL(QMediaGaplessPlaybackControl, QMediaGaplessPlaybackControl_iid)
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // QMEDIAGAPLESSPLAYBACKCONTROL_H
diff --git a/src/multimedia/controls/qmedianetworkaccesscontrol.cpp b/src/multimedia/controls/qmedianetworkaccesscontrol.cpp
new file mode 100644
index 000000000..a976859ed
--- /dev/null
+++ b/src/multimedia/controls/qmedianetworkaccesscontrol.cpp
@@ -0,0 +1,103 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qmedianetworkaccesscontrol.h"
+
+QT_BEGIN_NAMESPACE
+
+/*!
+ \class QMediaNetworkAccessControl
+ \preliminary
+ \brief The QMediaNetworkAccessControl class allows the setting of the Network Access Point for media related activities.
+ \ingroup multimedia-serv
+ \inmodule QtMultimedia
+ \since 1.2
+
+ The functionality provided by this control allows the
+ setting of a Network Access Point.
+
+ This control can be used to set a network access for various
+ network related activities. the exact nature in dependant on the underlying
+ usage by the supported QMediaObject
+*/
+
+QMediaNetworkAccessControl::QMediaNetworkAccessControl(QObject *parent) :
+ QMediaControl(parent)
+{
+}
+
+/*!
+ Destroys a network access control.
+*/
+QMediaNetworkAccessControl::~QMediaNetworkAccessControl()
+{
+}
+
+/*!
+ \fn void QMediaNetworkAccessControl::setConfigurations(const QList<QNetworkConfiguration> &configurations);
+
+ \a configurations contains a list of network configurations to be used for network access.
+
+ It is assumed the list is given in highest to lowest preference order.
+ By calling this function all previous configurations will be invalidated
+ and replaced with the new list.
+ \since 1.2
+*/
+
+/*
+ \fn QNetworkConfiguration QMediaNetworkAccessControl::currentConfiguration() const
+
+ Returns the current active configuration in use.
+ A default constructed QNetworkConfigration is returned if no user supplied configuration are in use.
+*/
+
+
+/*!
+ \fn QMediaNetworkAccessControl::configurationChanged(const QNetworkConfiguration &configuration)
+ This signal is emitted when the current active network configuration changes
+ to \a configuration.
+ \since 1.2
+*/
+
+
+
+#include "moc_qmedianetworkaccesscontrol.cpp"
+QT_END_NAMESPACE
diff --git a/src/multimedia/controls/qmedianetworkaccesscontrol.h b/src/multimedia/controls/qmedianetworkaccesscontrol.h
new file mode 100644
index 000000000..22ee95711
--- /dev/null
+++ b/src/multimedia/controls/qmedianetworkaccesscontrol.h
@@ -0,0 +1,83 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#ifndef QMEDIANETWORKACCESSCONTROL_H
+#define QMEDIANETWORKACCESSCONTROL_H
+
+#include "qmediacontrol.h"
+
+#include <QtCore/qlist.h>
+#include <QtNetwork/qnetworkconfiguration.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Multimedia)
+
+
+class Q_MULTIMEDIA_EXPORT QMediaNetworkAccessControl : public QMediaControl
+{
+ Q_OBJECT
+public:
+
+ virtual ~QMediaNetworkAccessControl();
+
+ virtual void setConfigurations(const QList<QNetworkConfiguration> &configuration) = 0;
+ virtual QNetworkConfiguration currentConfiguration() const = 0;
+
+Q_SIGNALS:
+ void configurationChanged(const QNetworkConfiguration& configuration);
+
+protected:
+ QMediaNetworkAccessControl(QObject *parent = 0);
+};
+
+#define QMediaNetworkAccessControl_iid "com.nokia.Qt.QMediaNetworkAccessControl/1.0"
+Q_MEDIA_DECLARE_CONTROL(QMediaNetworkAccessControl, QMediaNetworkAccessControl_iid)
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+
+#endif
diff --git a/src/multimedia/controls/qmediaplayercontrol.cpp b/src/multimedia/controls/qmediaplayercontrol.cpp
new file mode 100644
index 000000000..2585b044c
--- /dev/null
+++ b/src/multimedia/controls/qmediaplayercontrol.cpp
@@ -0,0 +1,414 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qmediaplayercontrol.h"
+#include "qmediacontrol_p.h"
+#include "qmediaplayer.h"
+
+QT_BEGIN_NAMESPACE
+
+
+/*!
+ \class QMediaPlayerControl
+ \inmodule QtMultimedia
+ \ingroup multimedia-serv
+ \since 1.0
+
+
+ \brief The QMediaPlayerControl class provides access to the media playing
+ functionality of a QMediaService.
+
+ If a QMediaService can play media is will implement QMediaPlayerControl.
+ This control provides a means to set the \l {setMedia()}{media} to play,
+ \l {play()}{start}, \l {pause()} {pause} and \l {stop()}{stop} playback,
+ \l {setPosition()}{seek}, and control the \l {setVolume()}{volume}.
+ It also provides feedback on the \l {duration()}{duration} of the media,
+ the current \l {position()}{position}, and \l {bufferStatus()}{buffering}
+ progress.
+
+ The functionality provided by this control is exposed to application
+ code through the QMediaPlayer class.
+
+ The interface name of QMediaPlayerControl is \c com.nokia.Qt.QMediaPlayerControl/1.0 as
+ defined in QMediaPlayerControl_iid.
+
+ \sa QMediaService::requestControl(), QMediaPlayer
+*/
+
+/*!
+ \macro QMediaPlayerControl_iid
+
+ \c com.nokia.Qt.QMediaPlayerControl/1.0
+
+ Defines the interface name of the QMediaPlayerControl class.
+
+ \relates QMediaPlayerControl
+*/
+
+/*!
+ Destroys a media player control.
+*/
+QMediaPlayerControl::~QMediaPlayerControl()
+{
+}
+
+/*!
+ Constructs a new media player control with the given \a parent.
+*/
+QMediaPlayerControl::QMediaPlayerControl(QObject *parent):
+ QMediaControl(*new QMediaControlPrivate, parent)
+{
+}
+
+/*!
+ \fn QMediaPlayerControl::state() const
+
+ Returns the state of a player control.
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaPlayerControl::stateChanged(QMediaPlayer::State state)
+
+ Signals that the \a state of a player control has changed.
+
+ \since 1.0
+ \sa state()
+*/
+
+/*!
+ \fn QMediaPlayerControl::mediaStatus() const
+
+ Returns the status of the current media.
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaPlayerControl::mediaStatusChanged(QMediaPlayer::MediaStatus status)
+
+ Signals that the \a status of the current media has changed.
+
+ \since 1.0
+ \sa mediaStatus()
+*/
+
+
+/*!
+ \fn QMediaPlayerControl::duration() const
+
+ Returns the duration of the current media in milliseconds.
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaPlayerControl::durationChanged(qint64 duration)
+
+ Signals that the \a duration of the current media has changed.
+
+ \since 1.0
+ \sa duration()
+*/
+
+/*!
+ \fn QMediaPlayerControl::position() const
+
+ Returns the current playback position in milliseconds.
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaPlayerControl::setPosition(qint64 position)
+
+ Sets the playback \a position of the current media. This will initiate a seek and it may take
+ some time for playback to reach the position set.
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaPlayerControl::positionChanged(qint64 position)
+
+ Signals the playback \a position has changed.
+
+ This is only emitted in when there has been a discontinous change in the playback postion, such
+ as a seek or the position being reset.
+
+ \since 1.0
+ \sa position()
+*/
+
+/*!
+ \fn QMediaPlayerControl::volume() const
+
+ Returns the audio volume of a player control.
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaPlayerControl::setVolume(int volume)
+
+ Sets the audio \a volume of a player control.
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaPlayerControl::volumeChanged(int volume)
+
+ Signals the audio \a volume of a player control has changed.
+
+ \since 1.0
+ \sa volume()
+*/
+
+/*!
+ \fn QMediaPlayerControl::isMuted() const
+
+ Returns the mute state of a player control.
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaPlayerControl::setMuted(bool mute)
+
+ Sets the \a mute state of a player control.
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaPlayerControl::mutedChanged(bool mute)
+
+ Signals a change in the \a mute status of a player control.
+
+ \since 1.0
+ \sa isMuted()
+*/
+
+/*!
+ \fn QMediaPlayerControl::bufferStatus() const
+
+ Returns the buffering progress of the current media. Progress is measured in the percentage
+ of the buffer filled.
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaPlayerControl::bufferStatusChanged(int progress)
+
+ Signals that buffering \a progress has changed.
+
+ \since 1.0
+ \sa bufferStatus()
+*/
+
+/*!
+ \fn QMediaPlayerControl::isAudioAvailable() const
+
+ Identifies if there is audio output available for the current media.
+
+ Returns true if audio output is available and false otherwise.
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaPlayerControl::audioAvailableChanged(bool audio)
+
+ Signals that there has been a change in the availability of \a audio output.
+
+ \since 1.0
+ \sa isAudioAvailable()
+*/
+
+/*!
+ \fn QMediaPlayerControl::isVideoAvailable() const
+
+ Identifies if there is video output available for the current media.
+
+ Returns true if video output is available and false otherwise.
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaPlayerControl::videoAvailableChanged(bool video)
+
+ Signals that there has been a change in the availability of \a video output.
+
+ \since 1.0
+ \sa isVideoAvailable()
+*/
+
+/*!
+ \fn QMediaPlayerControl::isSeekable() const
+
+ Identifies if the current media is seekable.
+
+ Returns true if it possible to seek within the current media, and false otherwise.
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaPlayerControl::seekableChanged(bool seekable)
+
+ Signals that the \a seekable state of a player control has changed.
+
+ \since 1.0
+ \sa isSeekable()
+*/
+
+/*!
+ \fn QMediaPlayerControl::availablePlaybackRanges() const
+
+ Returns a range of times in milliseconds that can be played back.
+
+ Usually for local files this is a continuous interval equal to [0..duration()]
+ or an empty time range if seeking is not supported, but for network sources
+ it refers to the buffered parts of the media.
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaPlayerControl::availablePlaybackRangesChanged(const QMediaTimeRange &ranges)
+
+ Signals that the available media playback \a ranges have changed.
+
+ \since 1.0
+ \sa QMediaPlayerControl::availablePlaybackRanges()
+*/
+
+/*!
+ \fn qreal QMediaPlayerControl::playbackRate() const
+
+ Returns the rate of playback.
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaPlayerControl::setPlaybackRate(qreal rate)
+
+ Sets the \a rate of playback.
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaPlayerControl::media() const
+
+ Returns the current media source.
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaPlayerControl::mediaStream() const
+
+ Returns the current media stream. This is only a valid if a stream was passed to setMedia().
+
+ \since 1.0
+ \sa setMedia()
+*/
+
+/*!
+ \fn QMediaPlayerControl::setMedia(const QMediaContent &media, QIODevice *stream)
+
+ Sets the current \a media source. If a \a stream is supplied; data will be read from that
+ instead of attempting to resolve the media source. The media source may still be used to
+ supply media information such as mime type.
+
+ Setting the media to a null QMediaContent will cause the control to discard all
+ information relating to the current media source and to cease all I/O operations related
+ to that media.
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaPlayerControl::mediaChanged(const QMediaContent& content)
+
+ Signals that the current media \a content has changed.
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaPlayerControl::play()
+
+ Starts playback of the current media.
+
+ If successful the player control will immediately enter the \l {QMediaPlayer::PlayingState}
+ {playing} state.
+
+ \since 1.0
+ \sa state()
+*/
+
+/*!
+ \fn QMediaPlayerControl::pause()
+
+ Pauses playback of the current media.
+
+ If sucessful the player control will immediately enter the \l {QMediaPlayer::PausedState}
+ {paused} state.
+
+ \since 1.0
+ \sa state(), play(), stop()
+*/
+
+/*!
+ \fn QMediaPlayerControl::stop()
+
+ Stops playback of the current media.
+
+ If successful the player control will immediately enter the \l {QMediaPlayer::StoppedState}
+ {stopped} state.
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaPlayerControl::error(int error, const QString &errorString)
+
+ Signals that an \a error has occurred. The \a errorString provides a more detailed explanation.
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaPlayerControl::playbackRateChanged(qreal rate)
+
+ Signal emitted when playback rate changes to \a rate.
+ \since 1.0
+*/
+
+#include "moc_qmediaplayercontrol.cpp"
+QT_END_NAMESPACE
+
diff --git a/src/multimedia/controls/qmediaplayercontrol.h b/src/multimedia/controls/qmediaplayercontrol.h
new file mode 100644
index 000000000..a6e02ee9a
--- /dev/null
+++ b/src/multimedia/controls/qmediaplayercontrol.h
@@ -0,0 +1,131 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QMEDIAPLAYERCONTROL_H
+#define QMEDIAPLAYERCONTROL_H
+
+#include "qmediacontrol.h"
+#include "qmediaplayer.h"
+#include "qmediatimerange.h"
+
+#include <QtCore/qpair.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Multimedia)
+
+
+class QMediaPlaylist;
+
+class Q_MULTIMEDIA_EXPORT QMediaPlayerControl : public QMediaControl
+{
+ Q_OBJECT
+
+public:
+ ~QMediaPlayerControl();
+
+ virtual QMediaPlayer::State state() const = 0;
+
+ virtual QMediaPlayer::MediaStatus mediaStatus() const = 0;
+
+ virtual qint64 duration() const = 0;
+
+ virtual qint64 position() const = 0;
+ virtual void setPosition(qint64 position) = 0;
+
+ virtual int volume() const = 0;
+ virtual void setVolume(int volume) = 0;
+
+ virtual bool isMuted() const = 0;
+ virtual void setMuted(bool muted) = 0;
+
+ virtual int bufferStatus() const = 0;
+
+ virtual bool isAudioAvailable() const = 0;
+ virtual bool isVideoAvailable() const = 0;
+
+ virtual bool isSeekable() const = 0;
+
+ virtual QMediaTimeRange availablePlaybackRanges() const = 0;
+
+ virtual qreal playbackRate() const = 0;
+ virtual void setPlaybackRate(qreal rate) = 0;
+
+ virtual QMediaContent media() const = 0;
+ virtual const QIODevice *mediaStream() const = 0;
+ virtual void setMedia(const QMediaContent &media, QIODevice *stream) = 0;
+
+ virtual void play() = 0;
+ virtual void pause() = 0;
+ virtual void stop() = 0;
+
+Q_SIGNALS:
+ void mediaChanged(const QMediaContent& content);
+ void durationChanged(qint64 duration);
+ void positionChanged(qint64 position);
+ void stateChanged(QMediaPlayer::State newState);
+ void mediaStatusChanged(QMediaPlayer::MediaStatus status);
+ void volumeChanged(int volume);
+ void mutedChanged(bool muted);
+ void audioAvailableChanged(bool audioAvailable);
+ void videoAvailableChanged(bool videoAvailable);
+ void bufferStatusChanged(int percentFilled);
+ void seekableChanged(bool);
+ void availablePlaybackRangesChanged(const QMediaTimeRange&);
+ void playbackRateChanged(qreal rate);
+ void error(int error, const QString &errorString);
+
+protected:
+ QMediaPlayerControl(QObject* parent = 0);
+};
+
+#define QMediaPlayerControl_iid "com.nokia.Qt.QMediaPlayerControl/1.0"
+Q_MEDIA_DECLARE_CONTROL(QMediaPlayerControl, QMediaPlayerControl_iid)
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+
+#endif // QMEDIAPLAYERCONTROL_H
+
diff --git a/src/multimedia/controls/qmediaplaylistcontrol.cpp b/src/multimedia/controls/qmediaplaylistcontrol.cpp
new file mode 100644
index 000000000..dc2348956
--- /dev/null
+++ b/src/multimedia/controls/qmediaplaylistcontrol.cpp
@@ -0,0 +1,219 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include "qmediaplaylistcontrol.h"
+#include "qmediacontrol_p.h"
+
+QT_BEGIN_NAMESPACE
+
+/*!
+ \class QMediaPlaylistControl
+ \inmodule QtMultimedia
+ \ingroup multimedia-serv
+ \since 1.0
+
+
+ \brief The QMediaPlaylistControl class provides access to the playlist
+ functionality of a QMediaService.
+
+ If a QMediaService contains an internal playlist it will implement
+ QMediaPlaylistControl. This control provides access to the contents of the
+ \l {playlistProvider()}{playlist}, as well as the \l
+ {currentIndex()}{position} of the current media, and a means of navigating
+ to the \l {next()}{next} and \l {previous()}{previous} media.
+
+ The functionality provided by the control is exposed to application code
+ through the QMediaPlaylist class.
+
+ The interface name of QMediaPlaylistControl is \c com.nokia.Qt.QMediaPlaylistControl/1.0 as
+ defined in QMediaPlaylistControl_iid.
+
+ \sa QMediaService::requestControl(), QMediaPlayer
+*/
+
+/*!
+ \macro QMediaPlaylistControl_iid
+
+ \c com.nokia.Qt.QMediaPlaylistControl/1.0
+
+ Defines the interface name of the QMediaPlaylistControl class.
+
+ \relates QMediaPlaylistControl
+*/
+
+/*!
+ Create a new playlist control object with the given \a parent.
+*/
+QMediaPlaylistControl::QMediaPlaylistControl(QObject *parent):
+ QMediaControl(*new QMediaControlPrivate, parent)
+{
+}
+
+/*!
+ Destroys the playlist control.
+*/
+QMediaPlaylistControl::~QMediaPlaylistControl()
+{
+}
+
+
+/*!
+ \fn QMediaPlaylistControl::playlistProvider() const
+
+ Returns the playlist used by this media player.
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaPlaylistControl::setPlaylistProvider(QMediaPlaylistProvider *playlist)
+
+ Set the playlist of this media player to \a playlist.
+
+ In many cases it is possible just to use the playlist
+ constructed by player, but sometimes replacing the whole
+ playlist allows to avoid copyting of all the items bettween playlists.
+
+ Returns true if player can use this passed playlist; otherwise returns false.
+
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaPlaylistControl::currentIndex() const
+
+ Returns position of the current media source in the playlist.
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaPlaylistControl::setCurrentIndex(int position)
+
+ Jump to the item at the given \a position.
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaPlaylistControl::nextIndex(int step) const
+
+ Returns the index of item, which were current after calling next()
+ \a step times.
+
+ Returned value depends on the size of playlist, current position
+ and playback mode.
+
+ \since 1.0
+ \sa QMediaPlaylist::playbackMode
+*/
+
+/*!
+ \fn QMediaPlaylistControl::previousIndex(int step) const
+
+ Returns the index of item, which were current after calling previous()
+ \a step times.
+
+ \since 1.0
+ \sa QMediaPlaylist::playbackMode
+*/
+
+/*!
+ \fn QMediaPlaylistControl::next()
+
+ Moves to the next item in playlist.
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaPlaylistControl::previous()
+
+ Returns to the previous item in playlist.
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaPlaylistControl::playbackMode() const
+
+ Returns the playlist navigation mode.
+
+ \since 1.0
+ \sa QMediaPlaylist::PlaybackMode
+*/
+
+/*!
+ \fn QMediaPlaylistControl::setPlaybackMode(QMediaPlaylist::PlaybackMode mode)
+
+ Sets the playback \a mode.
+
+ \since 1.0
+ \sa QMediaPlaylist::PlaybackMode
+*/
+
+/*!
+ \fn QMediaPlaylistControl::playlistProviderChanged()
+
+ Signal emitted when the playlist provider has changed.
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaPlaylistControl::currentIndexChanged(int position)
+
+ Signal emitted when the playlist \a position is changed.
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaPlaylistControl::playbackModeChanged(QMediaPlaylist::PlaybackMode mode)
+
+ Signal emitted when the playback \a mode is changed.
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaPlaylistControl::currentMediaChanged(const QMediaContent& content)
+
+ Signal emitted when current media changes to \a content.
+ \since 1.0
+*/
+
+#include "moc_qmediaplaylistcontrol.cpp"
+QT_END_NAMESPACE
+
diff --git a/src/multimedia/controls/qmediaplaylistcontrol.h b/src/multimedia/controls/qmediaplaylistcontrol.h
new file mode 100644
index 000000000..2cce448fa
--- /dev/null
+++ b/src/multimedia/controls/qmediaplaylistcontrol.h
@@ -0,0 +1,98 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#ifndef QMEDIAPLAYLISTCONTROL_H
+#define QMEDIAPLAYLISTCONTROL_H
+
+#include "qmediacontrol.h"
+#include "qmediaplaylistnavigator.h"
+
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Multimedia)
+
+
+class QMediaPlaylistProvider;
+
+class Q_MULTIMEDIA_EXPORT QMediaPlaylistControl : public QMediaControl
+{
+ Q_OBJECT
+
+public:
+ virtual ~QMediaPlaylistControl();
+
+ virtual QMediaPlaylistProvider* playlistProvider() const = 0;
+ virtual bool setPlaylistProvider(QMediaPlaylistProvider *playlist) = 0;
+
+ virtual int currentIndex() const = 0;
+ virtual void setCurrentIndex(int position) = 0;
+ virtual int nextIndex(int steps) const = 0;
+ virtual int previousIndex(int steps) const = 0;
+
+ virtual void next() = 0;
+ virtual void previous() = 0;
+
+ virtual QMediaPlaylist::PlaybackMode playbackMode() const = 0;
+ virtual void setPlaybackMode(QMediaPlaylist::PlaybackMode mode) = 0;
+
+Q_SIGNALS:
+ void playlistProviderChanged();
+ void currentIndexChanged(int position);
+ void currentMediaChanged(const QMediaContent&);
+ void playbackModeChanged(QMediaPlaylist::PlaybackMode mode);
+
+protected:
+ QMediaPlaylistControl(QObject* parent = 0);
+};
+
+#define QMediaPlaylistControl_iid "com.nokia.Qt.QMediaPlaylistControl/1.0"
+Q_MEDIA_DECLARE_CONTROL(QMediaPlaylistControl, QMediaPlaylistControl_iid)
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+
+#endif // QMEDIAPLAYLISTCONTROL_H
diff --git a/src/multimedia/controls/qmediaplaylistsourcecontrol.cpp b/src/multimedia/controls/qmediaplaylistsourcecontrol.cpp
new file mode 100644
index 000000000..2ab8aee2c
--- /dev/null
+++ b/src/multimedia/controls/qmediaplaylistsourcecontrol.cpp
@@ -0,0 +1,128 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include "qmediaplaylistsourcecontrol.h"
+#include "qmediacontrol_p.h"
+
+QT_BEGIN_NAMESPACE
+
+/*!
+ \class QMediaPlaylistSourceControl
+ \inmodule QtMultimedia
+ \ingroup multimedia-serv
+ \since 1.0
+
+
+ \brief The QMediaPlaylistSourceControl class provides access to the playlist playback
+ functionality of a QMediaService.
+
+ This control allows QMediaPlaylist to be passed directly to the service
+ instead of playing media sources one by one. This control should be
+ implemented if backend benefits from knowing the next media source to be
+ played, for example for preloading, cross fading or gap-less playback.
+
+ If QMediaPlaylistSourceControl is provided, the backend must listen for
+ current playlist item changes to load corresponding media source and
+ advance the playlist with QMediaPlaylist::next() when playback of the
+ current media is finished.
+
+ The interface name of QMediaPlaylistSourceControl is \c com.nokia.Qt.QMediaPlaylistSourceControl/1.0 as
+ defined in QMediaPlaylistSourceControl_iid.
+
+ \sa QMediaService::requestControl(), QMediaPlayer
+*/
+
+/*!
+ \macro QMediaPlaylistSourceControl_iid
+
+ \c com.nokia.Qt.QMediaPlaylistSourceControl/1.0
+
+ Defines the interface name of the QMediaPlaylistSourceControl class.
+
+ \relates QMediaPlaylistSourceControl
+*/
+
+/*!
+ Create a new playlist source control object with the given \a parent.
+*/
+QMediaPlaylistSourceControl::QMediaPlaylistSourceControl(QObject *parent):
+ QMediaControl(*new QMediaControlPrivate, parent)
+{
+}
+
+/*!
+ Destroys the playlist control.
+*/
+QMediaPlaylistSourceControl::~QMediaPlaylistSourceControl()
+{
+}
+
+
+/*!
+ \fn QMediaPlaylistSourceControl::playlist() const
+
+ Returns the current playlist.
+ Should return a null pointer if no playlist is assigned.
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaPlaylistSourceControl::setPlaylist(QMediaPlaylist *playlist)
+
+ Set the playlist of this media player to \a playlist.
+ If a null pointer is passed, the playlist source should be disabled.
+
+ The current media should be replaced with the current item of the media playlist.
+ \since 1.0
+*/
+
+
+/*!
+ \fn QMediaPlaylistSourceControl::playlistChanged(QMediaPlaylist* playlist)
+
+ Signal emitted when the playlist has changed to \a playlist.
+ \since 1.0
+*/
+
+#include "moc_qmediaplaylistsourcecontrol.cpp"
+QT_END_NAMESPACE
+
diff --git a/src/multimedia/controls/qmediaplaylistsourcecontrol.h b/src/multimedia/controls/qmediaplaylistsourcecontrol.h
new file mode 100644
index 000000000..040bb6431
--- /dev/null
+++ b/src/multimedia/controls/qmediaplaylistsourcecontrol.h
@@ -0,0 +1,82 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#ifndef QMEDIAPLAYLISTSOURCECONTROL_H
+#define QMEDIAPLAYLISTSOURCECONTROL_H
+
+#include <qmediacontrol.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Multimedia)
+
+
+class QMediaPlaylist;
+
+class Q_MULTIMEDIA_EXPORT QMediaPlaylistSourceControl : public QMediaControl
+{
+ Q_OBJECT
+
+public:
+ virtual ~QMediaPlaylistSourceControl();
+
+ virtual QMediaPlaylist *playlist() const = 0;
+ virtual void setPlaylist(QMediaPlaylist *) = 0;
+
+Q_SIGNALS:
+ void playlistChanged(QMediaPlaylist* playlist);
+
+protected:
+ QMediaPlaylistSourceControl(QObject* parent = 0);
+};
+
+#define QMediaPlaylistSourceControl_iid "com.nokia.Qt.QMediaPlaylistSourceControl/1.0"
+Q_MEDIA_DECLARE_CONTROL(QMediaPlaylistSourceControl, QMediaPlaylistSourceControl_iid)
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+
+#endif // QMEDIAPLAYLISTCONTROL_H
diff --git a/src/multimedia/controls/qmediarecordercontrol.cpp b/src/multimedia/controls/qmediarecordercontrol.cpp
new file mode 100644
index 000000000..ffc51021b
--- /dev/null
+++ b/src/multimedia/controls/qmediarecordercontrol.cpp
@@ -0,0 +1,209 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qmediarecordercontrol.h"
+
+QT_BEGIN_NAMESPACE
+
+
+/*!
+ \class QMediaRecorderControl
+ \inmodule QtMultimedia
+ \ingroup multimedia-serv
+ \since 1.0
+
+
+ \brief The QMediaRecorderControl class provides access to the recording
+ functionality of a QMediaService.
+
+ If a QMediaService can record media it will implement QMediaRecorderControl.
+ This control provides a means to set the \l {outputLocation()}{output location},
+ and \l {record()}{start}, \l {pause()}{pause} and \l {stop()}{stop}
+ recording. It also provides feedback on the \l {duration()}{duration}
+ of the recording.
+
+ The functionality provided by this control is exposed to application
+ code through the QMediaRecorder class.
+
+ The interface name of QMediaRecorderControl is \c com.nokia.Qt.QMediaRecorderControl/1.0 as
+ defined in QMediaRecorderControl_iid.
+
+ \sa QMediaService::requestControl(), QMediaRecorder
+
+*/
+
+/*!
+ \macro QMediaRecorderControl_iid
+
+ \c com.nokia.Qt.QMediaRecorderControl/1.0
+
+ Defines the interface name of the QMediaRecorderControl class.
+
+ \relates QMediaRecorderControl
+*/
+
+/*!
+ Constructs a media recorder control with the given \a parent.
+*/
+
+QMediaRecorderControl::QMediaRecorderControl(QObject* parent)
+ : QMediaControl(parent)
+{
+}
+
+/*!
+ Destroys a media recorder control.
+*/
+
+QMediaRecorderControl::~QMediaRecorderControl()
+{
+}
+
+/*!
+ \fn QUrl QMediaRecorderControl::outputLocation() const
+
+ Returns the current output location being used.
+ \since 1.0
+*/
+
+/*!
+ \fn bool QMediaRecorderControl::setOutputLocation(const QUrl &location)
+
+ Sets the output \a location and returns if this operation is successful.
+ If file at the output location already exists, it should be overwritten.
+
+ The \a location can be relative or empty;
+ in this case the service should use the system specific place and file naming scheme.
+ After recording has stated, QMediaRecorderControl::outputLocation() should return the actual output location.
+ \since 1.0
+*/
+
+/*!
+ \fn int QMediaRecorderControl::state() const
+
+ Return the current recording state.
+ \since 1.0
+*/
+
+/*!
+ \fn qint64 QMediaRecorderControl::duration() const
+
+ Return the current duration in milliseconds.
+ \since 1.0
+*/
+
+/*!
+ \fn void QMediaRecorderControl::record()
+
+ Start recording.
+ \since 1.0
+*/
+
+/*!
+ \fn void QMediaRecorderControl::pause()
+
+ Pause recording.
+ \since 1.0
+*/
+
+/*!
+ \fn void QMediaRecorderControl::stop()
+
+ Stop recording.
+ \since 1.0
+*/
+
+/*!
+ \fn void QMediaRecorderControl::applySettings()
+
+ Commits the encoder settings and performs pre-initialization to reduce delays when recording
+ is started.
+ \since 1.0
+*/
+
+/*!
+ \fn bool QMediaRecorderControl::isMuted() const
+
+ Returns true if the recorder is muted, and false if it is not.
+ \since 1.0
+*/
+
+/*!
+ \fn void QMediaRecorderControl::setMuted(bool muted)
+
+ Sets the \a muted state of a media recorder.
+ \since 1.0
+*/
+
+
+/*!
+ \fn void QMediaRecorderControl::stateChanged(QMediaRecorder::State state)
+
+ Signals that the \a state of a media recorder has changed.
+ \since 1.0
+*/
+
+/*!
+ \fn void QMediaRecorderControl::durationChanged(qint64 duration)
+
+ Signals that the \a duration of the recorded media has changed.
+
+ This only emitted when there is a discontinuous change in the duration such as being reset to 0.
+ \since 1.0
+*/
+
+/*!
+ \fn void QMediaRecorderControl::mutedChanged(bool muted)
+
+ Signals that the \a muted state of a media recorder has changed.
+ \since 1.0
+*/
+
+/*!
+ \fn void QMediaRecorderControl::error(int error, const QString &errorString)
+
+ Signals that an \a error has occurred. The \a errorString describes the error.
+ \since 1.0
+*/
+
+#include "moc_qmediarecordercontrol.cpp"
+QT_END_NAMESPACE
+
diff --git a/src/multimedia/controls/qmediarecordercontrol.h b/src/multimedia/controls/qmediarecordercontrol.h
new file mode 100644
index 000000000..26f244c08
--- /dev/null
+++ b/src/multimedia/controls/qmediarecordercontrol.h
@@ -0,0 +1,101 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QMEDIARECORDERCONTROL_H
+#define QMEDIARECORDERCONTROL_H
+
+#include "qmediacontrol.h"
+#include "qmediarecorder.h"
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Multimedia)
+
+class QUrl;
+QT_END_NAMESPACE
+
+QT_BEGIN_NAMESPACE
+
+class Q_MULTIMEDIA_EXPORT QMediaRecorderControl : public QMediaControl
+{
+ Q_OBJECT
+
+public:
+ virtual ~QMediaRecorderControl();
+
+ virtual QUrl outputLocation() const = 0;
+ virtual bool setOutputLocation(const QUrl &location) = 0;
+
+ virtual QMediaRecorder::State state() const = 0;
+
+ virtual qint64 duration() const = 0;
+
+ virtual bool isMuted() const = 0;
+
+ virtual void applySettings() = 0;
+
+Q_SIGNALS:
+ void stateChanged(QMediaRecorder::State state);
+ void durationChanged(qint64 position);
+ void mutedChanged(bool muted);
+ void error(int error, const QString &errorString);
+
+public Q_SLOTS:
+ virtual void record() = 0;
+ virtual void pause() = 0;
+ virtual void stop() = 0;
+ virtual void setMuted(bool muted) = 0;
+
+protected:
+ QMediaRecorderControl(QObject* parent = 0);
+};
+
+#define QMediaRecorderControl_iid "com.nokia.Qt.QMediaRecorderControl/1.0"
+Q_MEDIA_DECLARE_CONTROL(QMediaRecorderControl, QMediaRecorderControl_iid)
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+
+#endif
diff --git a/src/multimedia/controls/qmediastreamscontrol.cpp b/src/multimedia/controls/qmediastreamscontrol.cpp
new file mode 100644
index 000000000..fb624c67d
--- /dev/null
+++ b/src/multimedia/controls/qmediastreamscontrol.cpp
@@ -0,0 +1,173 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qmediastreamscontrol.h"
+#include "qmediacontrol_p.h"
+
+QT_BEGIN_NAMESPACE
+
+namespace
+{
+ class QMediaStreamsControlPrivateRegisterMetaTypes
+ {
+ public:
+ QMediaStreamsControlPrivateRegisterMetaTypes()
+ {
+ qRegisterMetaType<QMediaStreamsControl::StreamType>();
+ }
+ } _registerMetaTypes;
+}
+
+/*!
+ \class QMediaStreamsControl
+ \preliminary
+
+ \inmodule QtMultimedia
+ \ingroup multimedia-serv
+ \brief The QMediaStreamsControl class provides a media stream selection control.
+
+ \since 1.0
+
+ The QMediaStreamsControl class provides descriptions of the available media streams
+ and allows individual streams to be activated and deactivated.
+
+ The interface name of QMediaStreamsControl is \c com.nokia.Qt.MediaStreamsControl as
+ defined in QMediaStreamsControl_iid.
+
+ \sa QMediaService::requestControl()
+*/
+
+/*!
+ \macro QMediaStreamsControl_iid
+
+ \c com.nokia.Qt.MediaStreamsControl
+
+ Defines the interface name of the QMediaStreamsControl class.
+
+ \relates QMediaStreamsControl
+ \since 1.0
+*/
+
+/*!
+ Constructs a new media streams control with the given \a parent.
+*/
+QMediaStreamsControl::QMediaStreamsControl(QObject *parent)
+ :QMediaControl(*new QMediaControlPrivate, parent)
+{
+}
+
+/*!
+ Destroys a media streams control.
+*/
+QMediaStreamsControl::~QMediaStreamsControl()
+{
+}
+
+/*!
+ \enum QMediaStreamsControl::StreamType
+
+ Media stream type.
+
+ \value AudioStream Audio stream.
+ \value VideoStream Video stream.
+ \value SubPictureStream Subpicture or teletext stream.
+ \value UnknownStream The stream type is unknown.
+ \value DataStream
+*/
+
+/*!
+ \fn QMediaStreamsControl::streamCount()
+
+ Returns the number of media streams.
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaStreamsControl::streamType(int stream)
+
+ Return the type of a media \a stream.
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaStreamsControl::metaData(int stream, QtMultimedia::MetaData key)
+
+ Returns the meta-data value of \a key for a given \a stream.
+
+ Useful metadata keya are QtMultimedia::Title, QtMultimedia::Description and QtMultimedia::Language.
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaStreamsControl::isActive(int stream)
+
+ Returns true if the media \a stream is active.
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaStreamsControl::setActive(int stream, bool state)
+
+ Sets the active \a state of a media \a stream.
+
+ Setting the active state of a media stream to true will activate it. If any other stream
+ of the same type was previously active it will be deactivated. Setting the active state fo a
+ media stream to false will deactivate it.
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaStreamsControl::streamsChanged()
+
+ The signal is emitted when the available streams list is changed.
+ \since 1.0
+*/
+
+/*!
+ \fn QMediaStreamsControl::activeStreamsChanged()
+
+ The signal is emitted when the active streams list is changed.
+ \since 1.0
+*/
+
+#include "moc_qmediastreamscontrol.cpp"
+QT_END_NAMESPACE
+
diff --git a/src/multimedia/controls/qmediastreamscontrol.h b/src/multimedia/controls/qmediastreamscontrol.h
new file mode 100644
index 000000000..bbd8a2a43
--- /dev/null
+++ b/src/multimedia/controls/qmediastreamscontrol.h
@@ -0,0 +1,95 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#ifndef QMEDIASTREAMSCONTROL_H
+#define QMEDIASTREAMSCONTROL_H
+
+#include "qmediacontrol.h"
+#include "qtmedianamespace.h"
+#include "qtmultimediadefs.h"
+#include <qmediaenumdebug.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Multimedia)
+
+
+class Q_MULTIMEDIA_EXPORT QMediaStreamsControl : public QMediaControl
+{
+ Q_OBJECT
+ Q_ENUMS(SteamType)
+public:
+ enum StreamType { UnknownStream, VideoStream, AudioStream, SubPictureStream, DataStream };
+
+ virtual ~QMediaStreamsControl();
+
+ virtual int streamCount() = 0;
+ virtual StreamType streamType(int streamNumber) = 0;
+
+ virtual QVariant metaData(int streamNumber, QtMultimedia::MetaData key) = 0;
+
+ virtual bool isActive(int streamNumber) = 0;
+ virtual void setActive(int streamNumber, bool state) = 0;
+
+Q_SIGNALS:
+ void streamsChanged();
+ void activeStreamsChanged();
+
+protected:
+ QMediaStreamsControl(QObject *parent = 0);
+};
+
+#define QMediaStreamsControl_iid "com.nokia.Qt.QMediaStreamsControl/1.0"
+Q_MEDIA_DECLARE_CONTROL(QMediaStreamsControl, QMediaStreamsControl_iid)
+
+QT_END_NAMESPACE
+
+Q_DECLARE_METATYPE(QMediaStreamsControl::StreamType)
+
+Q_MEDIA_ENUM_DEBUG(QMediaStreamsControl, StreamType)
+
+QT_END_HEADER
+
+#endif // QMEDIASTREAMSCONTROL_H
+
diff --git a/src/multimedia/controls/qmetadatareadercontrol.cpp b/src/multimedia/controls/qmetadatareadercontrol.cpp
new file mode 100644
index 000000000..63dd375b0
--- /dev/null
+++ b/src/multimedia/controls/qmetadatareadercontrol.cpp
@@ -0,0 +1,163 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qmediacontrol_p.h"
+#include <qmetadatareadercontrol.h>
+
+QT_BEGIN_NAMESPACE
+
+
+/*!
+ \class QMetaDataReaderControl
+ \inmodule QtMultimedia
+ \ingroup multimedia-serv
+ \since 1.0
+
+
+ \brief The QMetaDataReaderControl class provides read access to the
+ meta-data of a QMediaService's media.
+
+ If a QMediaService can provide read or write access to the meta-data of
+ its current media it will implement QMetaDataReaderControl. This control
+ provides functions for both retrieving and setting meta-data values.
+ Meta-data may be addressed by the well defined keys in the
+ QtMultimedia::MetaData enumeration using the metaData() functions, or by
+ string keys using the extendedMetaData() functions.
+
+ The functionality provided by this control is exposed to application
+ code by the meta-data members of QMediaObject, and so meta-data access
+ is potentially available in any of the media object classes. Any media
+ service may implement QMetaDataReaderControl.
+
+ The interface name of QMetaDataReaderControl is
+ \c com.nokia.Qt.QMetaDataReaderControl/1.0 as defined in
+ QMetaDataReaderControl_iid.
+
+ \sa QMediaService::requestControl(), QMediaObject
+*/
+
+/*!
+ \macro QMetaDataReaderControl_iid
+
+ \c com.nokia.Qt.QMetaDataReaderControl/1.0
+
+ Defines the interface name of the QMetaDataReaderControl class.
+
+ \relates QMetaDataReaderControl
+*/
+
+/*!
+ Construct a QMetaDataReaderControl with \a parent. This class is meant as a base class
+ for service specific meta data providers so this constructor is protected.
+*/
+
+QMetaDataReaderControl::QMetaDataReaderControl(QObject *parent):
+ QMediaControl(*new QMediaControlPrivate, parent)
+{
+}
+
+/*!
+ Destroy the meta-data object.
+*/
+
+QMetaDataReaderControl::~QMetaDataReaderControl()
+{
+}
+
+/*!
+ \fn bool QMetaDataReaderControl::isMetaDataAvailable() const
+
+ Identifies if meta-data is available from a media service.
+
+ Returns true if the meta-data is available and false otherwise.
+ \since 1.0
+*/
+
+/*!
+ \fn QVariant QMetaDataReaderControl::metaData(QtMultimedia::MetaData key) const
+
+ Returns the meta-data for the given \a key.
+ \since 1.0
+*/
+
+/*!
+ \fn QMetaDataReaderControl::availableMetaData() const
+
+ Returns a list of keys there is meta-data available for.
+ \since 1.0
+*/
+
+/*!
+ \fn QMetaDataReaderControl::extendedMetaData(const QString &key) const
+
+ Returns the metaData for an abitrary string \a key.
+
+ The valid selection of keys for extended meta-data is determined by the provider and the meaning
+ and type may differ between providers.
+ \since 1.0
+*/
+
+/*!
+ \fn QMetaDataReaderControl::availableExtendedMetaData() const
+
+ Returns a list of keys there is extended meta-data available for.
+ \since 1.0
+*/
+
+
+/*!
+ \fn void QMetaDataReaderControl::metaDataChanged()
+
+ Signal the changes of meta-data.
+ \since 1.0
+*/
+
+/*!
+ \fn void QMetaDataReaderControl::metaDataAvailableChanged(bool available)
+
+ Signal the availability of meta-data has changed, \a available will
+ be true if the multimedia object has meta-data.
+ \since 1.0
+*/
+
+#include "moc_qmetadatareadercontrol.cpp"
+QT_END_NAMESPACE
+
diff --git a/src/multimedia/controls/qmetadatareadercontrol.h b/src/multimedia/controls/qmetadatareadercontrol.h
new file mode 100644
index 000000000..0d370b5c4
--- /dev/null
+++ b/src/multimedia/controls/qmetadatareadercontrol.h
@@ -0,0 +1,92 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QMETADATAREADERCONTROL_H
+#define QMETADATAREADERCONTROL_H
+
+#include <qmediacontrol.h>
+#include <qmediaobject.h>
+
+#include <qmediaresource.h>
+
+#include <qtmultimediadefs.h>
+#include "qtmedianamespace.h"
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Multimedia)
+
+
+
+class Q_MULTIMEDIA_EXPORT QMetaDataReaderControl : public QMediaControl
+{
+ Q_OBJECT
+public:
+ ~QMetaDataReaderControl();
+
+ virtual bool isMetaDataAvailable() const = 0;
+
+ virtual QVariant metaData(QtMultimedia::MetaData key) const = 0;
+ virtual QList<QtMultimedia::MetaData> availableMetaData() const = 0;
+
+ virtual QVariant extendedMetaData(const QString &key) const = 0;
+ virtual QStringList availableExtendedMetaData() const = 0;
+
+Q_SIGNALS:
+ void metaDataChanged();
+
+ void metaDataAvailableChanged(bool available);
+
+protected:
+ QMetaDataReaderControl(QObject *parent = 0);
+};
+
+#define QMetaDataReaderControl_iid "com.nokia.Qt.QMetaDataReaderControl/1.0"
+Q_MEDIA_DECLARE_CONTROL(QMetaDataReaderControl, QMetaDataReaderControl_iid)
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+
+#endif // QMETADATAPROVIDER_H
diff --git a/src/multimedia/controls/qmetadatawritercontrol.cpp b/src/multimedia/controls/qmetadatawritercontrol.cpp
new file mode 100644
index 000000000..9d01662d7
--- /dev/null
+++ b/src/multimedia/controls/qmetadatawritercontrol.cpp
@@ -0,0 +1,195 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qmediacontrol_p.h"
+#include <qmetadatawritercontrol.h>
+
+QT_BEGIN_NAMESPACE
+
+
+/*!
+ \class QMetaDataWriterControl
+ \inmodule QtMultimedia
+ \ingroup multimedia-serv
+ \since 1.0
+
+
+ \brief The QMetaDataWriterControl class provides write access to the
+ meta-data of a QMediaService's media.
+
+ If a QMediaService can provide write access to the meta-data of its
+ current media it will implement QMetaDataWriterControl. This control
+ provides functions for both retrieving and setting meta-data values.
+ Meta-data may be addressed by the well defined keys in the
+ QtMultimedia::MetaData enumeration using the metaData() functions, or
+ by string keys using the extendedMetaData() functions.
+
+ The functionality provided by this control is exposed to application code
+ by the meta-data members of QMediaObject, and so meta-data access is
+ potentially available in any of the media object classes. Any media
+ service may implement QMetaDataControl.
+
+ The interface name of QMetaDataWriterControl is \c com.nokia.Qt.QMetaDataWriterControl/1.0 as
+ defined in QMetaDataWriterControl_iid.
+
+ \sa QMediaService::requestControl(), QMediaObject
+*/
+
+/*!
+ \macro QMetaDataWriterControl_iid
+
+ \c com.nokia.Qt.QMetaDataWriterControl/1.0
+
+ Defines the interface name of the QMetaDataWriterControl class.
+
+ \relates QMetaDataWriterControl
+*/
+
+/*!
+ Construct a QMetaDataWriterControl with \a parent. This class is meant as a base class
+ for service specific meta data providers so this constructor is protected.
+*/
+
+QMetaDataWriterControl::QMetaDataWriterControl(QObject *parent):
+ QMediaControl(*new QMediaControlPrivate, parent)
+{
+}
+
+/*!
+ Destroy the meta-data writer control.
+*/
+
+QMetaDataWriterControl::~QMetaDataWriterControl()
+{
+}
+
+/*!
+ \fn bool QMetaDataWriterControl::isMetaDataAvailable() const
+
+ Identifies if meta-data is available from a media service.
+
+ Returns true if the meta-data is available and false otherwise.
+ \since 1.0
+*/
+
+/*!
+ \fn bool QMetaDataWriterControl::isWritable() const
+
+ Identifies if a media service's meta-data can be edited.
+
+ Returns true if the meta-data is writable and false otherwise.
+ \since 1.0
+*/
+
+/*!
+ \fn QVariant QMetaDataWriterControl::metaData(QtMultimedia::MetaData key) const
+
+ Returns the meta-data for the given \a key.
+ \since 1.0
+*/
+
+/*!
+ \fn void QMetaDataWriterControl::setMetaData(QtMultimedia::MetaData key, const QVariant &value)
+
+ Sets the \a value of the meta-data element with the given \a key.
+ \since 1.0
+*/
+
+/*!
+ \fn QMetaDataWriterControl::availableMetaData() const
+
+ Returns a list of keys there is meta-data available for.
+*/
+
+/*!
+ \fn QMetaDataWriterControl::extendedMetaData(const QString &key) const
+
+ Returns the meta-data for an abitrary string \a key.
+
+ The valid selection of keys for extended meta-data is determined by the provider and the meaning
+ and type may differ between providers.
+ \since 1.0
+*/
+
+/*!
+ \fn QMetaDataWriterControl::setExtendedMetaData(const QString &key, const QVariant &value)
+
+ Change the value of the meta-data element with an abitrary string \a key to \a value.
+
+ The valid selection of keys for extended meta-data is determined by the provider and the meaning
+ and type may differ between providers.
+ \since 1.0
+*/
+
+/*!
+ \fn QMetaDataWriterControl::availableExtendedMetaData() const
+
+ Returns a list of keys there is extended meta-data available for.
+ \since 1.0
+*/
+
+
+/*!
+ \fn void QMetaDataWriterControl::metaDataChanged()
+
+ Signal the changes of meta-data.
+ \since 1.0
+*/
+
+/*!
+ \fn void QMetaDataWriterControl::metaDataAvailableChanged(bool available)
+
+ Signal the availability of meta-data has changed, \a available will
+ be true if the multimedia object has meta-data.
+ \since 1.0
+*/
+
+/*!
+ \fn void QMetaDataWriterControl::writableChanged(bool writable)
+
+ Signal a change in the writable status of meta-data, \a writable will be
+ true if meta-data elements can be added or adjusted.
+ \since 1.0
+*/
+
+#include "moc_qmetadatawritercontrol.cpp"
+QT_END_NAMESPACE
+
diff --git a/src/multimedia/controls/qmetadatawritercontrol.h b/src/multimedia/controls/qmetadatawritercontrol.h
new file mode 100644
index 000000000..3f8b8c3f4
--- /dev/null
+++ b/src/multimedia/controls/qmetadatawritercontrol.h
@@ -0,0 +1,97 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QMETADATAWRITERCONTROL_H
+#define QMETADATAWRITERCONTROL_H
+
+#include "qmediacontrol.h"
+#include "qmediaobject.h"
+
+#include "qmediaresource.h"
+
+#include <qtmultimediadefs.h>
+#include "qtmedianamespace.h"
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Multimedia)
+
+
+
+class Q_MULTIMEDIA_EXPORT QMetaDataWriterControl : public QMediaControl
+{
+ Q_OBJECT
+public:
+ ~QMetaDataWriterControl();
+
+ virtual bool isWritable() const = 0;
+ virtual bool isMetaDataAvailable() const = 0;
+
+ virtual QVariant metaData(QtMultimedia::MetaData key) const = 0;
+ virtual void setMetaData(QtMultimedia::MetaData key, const QVariant &value) = 0;
+ virtual QList<QtMultimedia::MetaData> availableMetaData() const = 0;
+
+ virtual QVariant extendedMetaData(const QString &key) const = 0;
+ virtual void setExtendedMetaData(const QString &key, const QVariant &value) = 0;
+ virtual QStringList availableExtendedMetaData() const = 0;
+
+
+Q_SIGNALS:
+ void metaDataChanged();
+
+ void writableChanged(bool writable);
+ void metaDataAvailableChanged(bool available);
+
+protected:
+ QMetaDataWriterControl(QObject *parent = 0);
+};
+
+#define QMetaDataWriterControl_iid "com.nokia.Qt.QMetaDataWriterControl/1.0"
+Q_MEDIA_DECLARE_CONTROL(QMetaDataWriterControl, QMetaDataWriterControl_iid)
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+
+#endif
diff --git a/src/multimedia/controls/qradiodatacontrol.cpp b/src/multimedia/controls/qradiodatacontrol.cpp
new file mode 100644
index 000000000..28b9a9973
--- /dev/null
+++ b/src/multimedia/controls/qradiodatacontrol.cpp
@@ -0,0 +1,216 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qtmultimediadefs.h>
+#include "qradiodatacontrol.h"
+#include "qmediacontrol_p.h"
+
+QT_BEGIN_NAMESPACE
+
+
+/*!
+ \class QRadioDataControl
+ \inmodule QtMultimedia
+ \ingroup multimedia-serv
+ \since 5.0
+
+
+ \brief The QRadioDataControl class provides access to the RDS functionality of the
+ radio in the QMediaService.
+
+ The functionality provided by this control is exposed to application code
+ through the QRadioData class.
+
+ The interface name of QRadioDataControl is \c com.nokia.Qt.QRadioDataControl/5.0 as
+ defined in QRadioDataControl_iid.
+
+ \sa QMediaService::requestControl(), QRadioData
+*/
+
+/*!
+ \macro QRadioDataControl_iid
+
+ \c com.nokia.Qt.QRadioDataControl/5.0
+
+ Defines the interface name of the QRadioDataControl class.
+
+ \relates QRadioDataControl
+*/
+
+/*!
+ Constructs a radio data control with the given \a parent.
+*/
+
+QRadioDataControl::QRadioDataControl(QObject *parent):
+ QMediaControl(*new QMediaControlPrivate, parent)
+{
+}
+
+/*!
+ Destroys a radio data control.
+*/
+
+QRadioDataControl::~QRadioDataControl()
+{
+}
+
+/*!
+ \fn bool QRadioDataControl::isAvailable() const
+
+ Returns true if the radio service is ready to use.
+ \since 5.0
+*/
+
+/*!
+ \fn QtMultimedia::AvailabilityError QRadioDataControl::availabilityError() const
+
+ Returns the error state of the radio service.
+ \since 5.0
+*/
+
+/*!
+ \fn QRadioData::Error QRadioDataControl::error() const
+
+ Returns the error state of a radio data.
+ \since 5.0
+*/
+
+/*!
+ \fn QString QRadioDataControl::errorString() const
+
+ Returns a string describing a radio data's error state.
+ \since 5.0
+*/
+
+/*!
+ \fn void QRadioDataControl::error(QRadioData::Error error)
+
+ Signals that an \a error has occurred.
+ \since 5.0
+*/
+
+/*!
+ \fn int QRadioDataControl::stationId()
+
+ Returns the current Program Identification
+ \since 5.0
+*/
+
+/*!
+ \fn QRadioData::ProgramType QRadioDataControl::programType()
+
+ Returns the current Program Type
+ \since 5.0
+*/
+
+/*!
+ \fn QString QRadioDataControl::programTypeName()
+
+ Returns the current Program Type Name
+ \since 5.0
+*/
+
+/*!
+ \fn QString QRadioDataControl::stationName()
+
+ Returns the current Program Service
+ \since 5.0
+*/
+
+/*!
+ \fn QString QRadioDataControl::radioText()
+
+ Returns the current Radio Text
+ \since 5.0
+*/
+
+/*!
+ \fn void QRadioDataControl::setAlternativeFrequenciesEnabled(bool enabled)
+
+ Sets the Alternative Frequency to \a enabled
+ \since 5.0
+*/
+
+/*!
+ \fn bool QRadioDataControl::isAlternativeFrequenciesEnabled()
+
+ Returns true if Alternative Frequency is currently enabled
+ \since 5.0
+*/
+
+/*!
+ \fn void QRadioDataControl::stationIdChanged(QString stationId)
+
+ Signals that the Program Identification \a stationId has changed
+ \since 5.0
+*/
+
+/*!
+ \fn void QRadioDataControl::programTypeChanged(QRadioData::ProgramType programType)
+
+ Signals that the Program Type \a programType has changed
+ \since 5.0
+*/
+
+/*!
+ \fn void QRadioDataControl::programTypeNameChanged(QString programTypeName)
+
+ Signals that the Program Type Name \a programTypeName has changed
+ \since 5.0
+*/
+
+/*!
+ \fn void QRadioDataControl::stationNameChanged(QString stationName)
+
+ Signals that the Program Service \a stationName has changed
+ \since 5.0
+*/
+
+/*!
+ \fn void QRadioDataControl::radioTextChanged(QString radioText)
+
+ Signals that the Radio Text \a radioText has changed
+ \since 5.0
+*/
+
+#include "moc_qradiodatacontrol.cpp"
+QT_END_NAMESPACE
+
diff --git a/src/multimedia/controls/qradiodatacontrol.h b/src/multimedia/controls/qradiodatacontrol.h
new file mode 100644
index 000000000..487236c4a
--- /dev/null
+++ b/src/multimedia/controls/qradiodatacontrol.h
@@ -0,0 +1,97 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QRADIODATACONTROL_H
+#define QRADIODATACONTROL_H
+
+#include "qmediacontrol.h"
+#include "qradiodata.h"
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Multimedia)
+
+
+class Q_MULTIMEDIA_EXPORT QRadioDataControl : public QMediaControl
+{
+ Q_OBJECT
+
+public:
+ ~QRadioDataControl();
+
+ virtual bool isAvailable() const = 0;
+ virtual QtMultimedia::AvailabilityError availabilityError() const = 0;
+
+ virtual QString stationId() const = 0;
+ virtual QRadioData::ProgramType programType() const = 0;
+ virtual QString programTypeName() const = 0;
+ virtual QString stationName() const = 0;
+ virtual QString radioText() const = 0;
+ virtual void setAlternativeFrequenciesEnabled(bool enabled) = 0;
+ virtual bool isAlternativeFrequenciesEnabled() const = 0;
+
+ virtual QRadioData::Error error() const = 0;
+ virtual QString errorString() const = 0;
+
+Q_SIGNALS:
+ void stationIdChanged(QString stationId);
+ void programTypeChanged(QRadioData::ProgramType programType);
+ void programTypeNameChanged(QString programTypeName);
+ void stationNameChanged(QString stationName);
+ void radioTextChanged(QString radioText);
+ void alternativeFrequenciesEnabledChanged(bool enabled);
+ void error(QRadioData::Error err);
+
+protected:
+ QRadioDataControl(QObject *parent = 0);
+};
+
+#define QRadioDataControl_iid "com.nokia.Qt.QRadioDataControl/5.0"
+Q_MEDIA_DECLARE_CONTROL(QRadioDataControl, QRadioDataControl_iid)
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+
+#endif // QRADIODATACONTROL_H
diff --git a/src/multimedia/controls/qradiotunercontrol.cpp b/src/multimedia/controls/qradiotunercontrol.cpp
new file mode 100644
index 000000000..6e2b488a3
--- /dev/null
+++ b/src/multimedia/controls/qradiotunercontrol.cpp
@@ -0,0 +1,378 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qtmultimediadefs.h>
+#include "qradiotunercontrol.h"
+#include "qmediacontrol_p.h"
+
+QT_BEGIN_NAMESPACE
+
+
+/*!
+ \class QRadioTunerControl
+ \inmodule QtMultimedia
+ \ingroup multimedia-serv
+ \since 1.0
+
+
+ \brief The QRadioTunerControl class provides access to the radio tuning
+ functionality of a QMediaService.
+
+ If a QMediaService can tune an analog radio device it will implement
+ QRadioTunerControl. This control provides a means to tune a radio device
+ to a specific \l {setFrequency()}{frequency} as well as search \l
+ {searchForward()}{forwards} and \l {searchBackward()}{backwards} for a
+ signal.
+
+ The functionality provided by this control is exposed to application code
+ through the QRadioTuner class.
+
+ The interface name of QRadioTunerControl is \c com.nokia.Qt.QRadioTunerControl/1.0 as
+ defined in QRadioTunerControl_iid.
+
+ \sa QMediaService::requestControl(), QRadioTuner
+*/
+
+/*!
+ \macro QRadioTunerControl_iid
+
+ \c com.nokia.Qt.QRadioTunerControl/1.0
+
+ Defines the interface name of the QRadioTunerControl class.
+
+ \relates QRadioTunerControl
+*/
+
+/*!
+ Constructs a radio tuner control with the given \a parent.
+*/
+
+QRadioTunerControl::QRadioTunerControl(QObject *parent):
+ QMediaControl(*new QMediaControlPrivate, parent)
+{
+}
+
+/*!
+ Destroys a radio tuner control.
+*/
+
+QRadioTunerControl::~QRadioTunerControl()
+{
+}
+
+/*!
+ \fn bool QRadioTunerControl::isAvailable() const
+
+ Returns true if the radio service is ready to use.
+ \since 1.0
+*/
+
+/*!
+ \fn QtMultimedia::AvailabilityError QRadioTunerControl::availabilityError() const
+
+ Returns the error state of the radio service.
+ \since 1.0
+*/
+
+/*!
+ \fn QRadioTuner::State QRadioTunerControl::state() const
+
+ Returns the current radio tuner state.
+ \since 1.0
+*/
+
+/*!
+ \fn QRadioTuner::Band QRadioTunerControl::band() const
+
+ Returns the frequency band a radio tuner is tuned to.
+ \since 1.0
+*/
+
+/*!
+ \fn void QRadioTunerControl::bandChanged(QRadioTuner::Band band)
+
+ Signals that the frequency \a band a radio tuner is tuned to has changed.
+ \since 1.0
+*/
+
+/*!
+ \fn void QRadioTunerControl::setBand(QRadioTuner::Band band)
+
+ Sets the frequecy \a band a radio tuner is tuned to.
+
+ Changing the frequency band will reset the frequency to the minimum frequency of the new band.
+ \since 1.0
+*/
+
+/*!
+ \fn bool QRadioTunerControl::isBandSupported(QRadioTuner::Band band) const
+
+ Identifies if a frequency \a band is supported.
+
+ Returns true if the band is supported, and false if it is not.
+ \since 1.0
+*/
+
+/*!
+ \fn int QRadioTunerControl::frequency() const
+
+ Returns the frequency a radio tuner is tuned to.
+ \since 1.0
+*/
+
+/*!
+ \fn int QRadioTunerControl::frequencyStep(QRadioTuner::Band band) const
+
+ Returns the number of Hertz to increment the frequency by when stepping through frequencies
+ within a given \a band.
+ \since 1.0
+*/
+
+/*!
+ \fn QPair<int,int> QRadioTunerControl::frequencyRange(QRadioTuner::Band band) const
+
+ Returns a frequency \a band's minimum and maximum frequency.
+ \since 1.0
+*/
+
+/*!
+ \fn void QRadioTunerControl::setFrequency(int frequency)
+
+ Sets the \a frequency a radio tuner is tuned to.
+ \since 1.0
+*/
+
+/*!
+ \fn bool QRadioTunerControl::isStereo() const
+
+ Identifies if a radio tuner is receiving a stereo signal.
+
+ Returns true if the tuner is receiving a stereo signal, and false if it is not.
+ \since 1.0
+*/
+
+/*!
+ \fn QRadioTuner::StereoMode QRadioTunerControl::stereoMode() const
+
+ Returns a radio tuner's stereo mode.
+
+ \since 1.0
+ \sa QRadioTuner::StereoMode
+*/
+
+/*!
+ \fn void QRadioTunerControl::setStereoMode(QRadioTuner::StereoMode mode)
+
+ Sets a radio tuner's stereo \a mode.
+
+ \since 1.0
+ \sa QRadioTuner::StereoMode
+*/
+
+/*!
+ \fn int QRadioTunerControl::signalStrength() const
+
+ Return a radio tuner's current signal strength as a percentage.
+ \since 1.0
+*/
+
+/*!
+ \fn int QRadioTunerControl::volume() const
+
+ Returns the volume of a radio tuner's audio output as a percentage.
+ \since 1.0
+*/
+
+/*!
+ \fn void QRadioTunerControl::setVolume(int volume)
+
+ Sets the percentage \a volume of a radio tuner's audio output.
+ \since 1.0
+*/
+
+/*!
+ \fn bool QRadioTunerControl::isMuted() const
+
+ Identifies if a radio tuner's audio output is muted.
+
+ Returns true if the audio is muted, and false if it is not.
+ \since 1.0
+*/
+
+/*!
+ \fn void QRadioTunerControl::setMuted(bool muted)
+
+ Sets the \a muted state of a radio tuner's audio output.
+ \since 1.0
+*/
+
+/*!
+ \fn bool QRadioTunerControl::isSearching() const
+
+ Identifies if a radio tuner is currently scanning for signal.
+
+ Returns true if the tuner is scanning, and false if it is not.
+ \since 1.0
+*/
+
+/*!
+ \fn void QRadioTunerControl::searchForward()
+
+ Starts a forward scan for a signal, starting from the current \l frequency().
+ \since 1.0
+*/
+
+/*!
+ \fn void QRadioTunerControl::searchBackward()
+
+ Starts a backwards scan for a signal, starting from the current \l frequency().
+ \since 1.0
+*/
+
+/*!
+ \fn void QRadioTunerControl::searchAllStations()
+
+ Starts a scan through the whole frequency band searching all stations
+ \since 5.0
+*/
+
+/*!
+ \fn void QRadioTunerControl::cancelSearch()
+
+ Stops scanning for a signal.
+ \since 1.0
+*/
+
+/*!
+ \fn void QRadioTunerControl::start()
+
+ Activate the radio device.
+ \since 1.0
+*/
+
+/*!
+ \fn QRadioTunerControl::stop()
+
+ Deactivate the radio device.
+ \since 1.0
+*/
+
+/*!
+ \fn QRadioTuner::Error QRadioTunerControl::error() const
+
+ Returns the error state of a radio tuner.
+ \since 1.0
+*/
+
+/*!
+ \fn QString QRadioTunerControl::errorString() const
+
+ Returns a string describing a radio tuner's error state.
+ \since 1.0
+*/
+
+/*!
+ \fn void QRadioTunerControl::stateChanged(QRadioTuner::State state)
+
+ Signals that the \a state of a radio tuner has changed.
+ \since 1.0
+*/
+
+
+/*!
+ \fn void QRadioTunerControl::frequencyChanged(int frequency)
+
+ Signals that the \a frequency a radio tuner is tuned to has changed.
+ \since 1.0
+*/
+
+/*!
+ \fn void QRadioTunerControl::stereoStatusChanged(bool stereo)
+
+ Signals that the \a stereo state of a radio tuner has changed.
+ \since 1.0
+*/
+
+/*!
+ \fn void QRadioTunerControl::searchingChanged(bool searching)
+
+ Signals that the \a searching state of a radio tuner has changed.
+ \since 1.0
+*/
+
+/*!
+ \fn void QRadioTunerControl::signalStrengthChanged(int strength)
+
+ Signals that the percentage \a strength of the signal received by a radio tuner has changed.
+ \since 1.0
+*/
+
+/*!
+ \fn void QRadioTunerControl::volumeChanged(int volume)
+
+ Signals that the percentage \a volume of radio tuner's audio output has changed.
+ \since 1.0
+*/
+
+/*!
+ \fn void QRadioTunerControl::mutedChanged(bool muted)
+
+ Signals that the \a muted state of a radio tuner's audio output has changed.
+ \since 1.0
+*/
+
+/*!
+ \fn void QRadioTunerControl::error(QRadioTuner::Error error)
+
+ Signals that an \a error has occurred.
+ \since 1.0
+*/
+
+/*!
+ \fn void QRadioTunerControl::stationFound(int frequency)
+
+ Signals that new station with \a frequency was found when scanning
+ \since 5.0
+*/
+
+#include "moc_qradiotunercontrol.cpp"
+QT_END_NAMESPACE
+
diff --git a/src/multimedia/controls/qradiotunercontrol.h b/src/multimedia/controls/qradiotunercontrol.h
new file mode 100644
index 000000000..b0ea54250
--- /dev/null
+++ b/src/multimedia/controls/qradiotunercontrol.h
@@ -0,0 +1,125 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QRADIOTUNERCONTROL_H
+#define QRADIOTUNERCONTROL_H
+
+#include "qmediacontrol.h"
+#include "qradiotuner.h"
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Multimedia)
+
+
+class Q_MULTIMEDIA_EXPORT QRadioTunerControl : public QMediaControl
+{
+ Q_OBJECT
+
+public:
+ ~QRadioTunerControl();
+
+ virtual bool isAvailable() const = 0;
+ virtual QtMultimedia::AvailabilityError availabilityError() const = 0;
+
+ virtual QRadioTuner::State state() const = 0;
+
+ virtual QRadioTuner::Band band() const = 0;
+ virtual void setBand(QRadioTuner::Band b) = 0;
+ virtual bool isBandSupported(QRadioTuner::Band b) const = 0;
+
+ virtual int frequency() const = 0;
+ virtual int frequencyStep(QRadioTuner::Band b) const = 0;
+ virtual QPair<int,int> frequencyRange(QRadioTuner::Band b) const = 0;
+ virtual void setFrequency(int frequency) = 0;
+
+ virtual bool isStereo() const = 0;
+ virtual QRadioTuner::StereoMode stereoMode() const = 0;
+ virtual void setStereoMode(QRadioTuner::StereoMode mode) = 0;
+
+ virtual int signalStrength() const = 0;
+
+ virtual int volume() const = 0;
+ virtual void setVolume(int volume) = 0;
+
+ virtual bool isMuted() const = 0;
+ virtual void setMuted(bool muted) = 0;
+
+ virtual bool isSearching() const = 0;
+
+ virtual void searchForward() = 0;
+ virtual void searchBackward() = 0;
+ virtual void searchAllStations(QRadioTuner::SearchMode searchMode = QRadioTuner::SearchFast) = 0;
+ virtual void cancelSearch() = 0;
+
+ virtual void start() = 0;
+ virtual void stop() = 0;
+
+ virtual QRadioTuner::Error error() const = 0;
+ virtual QString errorString() const = 0;
+
+Q_SIGNALS:
+ void stateChanged(QRadioTuner::State state);
+ void bandChanged(QRadioTuner::Band band);
+ void frequencyChanged(int frequency);
+ void stereoStatusChanged(bool stereo);
+ void searchingChanged(bool searching);
+ void signalStrengthChanged(int signalStrength);
+ void volumeChanged(int volume);
+ void mutedChanged(bool muted);
+ void error(QRadioTuner::Error err);
+ void stationFound(int frequency, QString stationId);
+
+protected:
+ QRadioTunerControl(QObject *parent = 0);
+};
+
+#define QRadioTunerControl_iid "com.nokia.Qt.QRadioTunerControl/1.0"
+Q_MEDIA_DECLARE_CONTROL(QRadioTunerControl, QRadioTunerControl_iid)
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+
+#endif // QRADIOTUNERCONTROL_H
diff --git a/src/multimedia/controls/qvideodevicecontrol.cpp b/src/multimedia/controls/qvideodevicecontrol.cpp
new file mode 100644
index 000000000..a864fd580
--- /dev/null
+++ b/src/multimedia/controls/qvideodevicecontrol.cpp
@@ -0,0 +1,159 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qvideodevicecontrol.h"
+
+QT_BEGIN_NAMESPACE
+
+/*!
+ \class QVideoDeviceControl
+
+ \brief The QVideoDeviceControl class provides an video device selector media control.
+ \inmodule QtMultimedia
+ \ingroup multimedia-serv
+ \since 1.0
+
+ The QVideoDeviceControl class provides descriptions of the video devices
+ available on a system and allows one to be selected as the endpoint of a
+ media service.
+
+ The interface name of QVideoDeviceControl is \c com.nokia.Qt.VideoDeviceControl as
+ defined in QVideoDeviceControl_iid.
+*/
+
+/*!
+ \macro QVideoDeviceControl_iid
+
+ \c com.nokia.Qt.VideoDeviceControl
+
+ Defines the interface name of the QVideoDeviceControl class.
+
+ \relates QVideoDeviceControl
+*/
+
+/*!
+ Constructs a video device control with the given \a parent.
+*/
+QVideoDeviceControl::QVideoDeviceControl(QObject *parent)
+ :QMediaControl(parent)
+{
+}
+
+/*!
+ Destroys a video device control.
+*/
+QVideoDeviceControl::~QVideoDeviceControl()
+{
+}
+
+/*!
+ \fn QVideoDeviceControl::deviceCount() const
+
+ Returns the number of available video devices;
+ \since 1.0
+*/
+
+/*!
+ \fn QVideoDeviceControl::deviceName(int index) const
+
+ Returns the name of the video device at \a index.
+ \since 1.0
+*/
+
+/*!
+ \fn QVideoDeviceControl::deviceDescription(int index) const
+
+ Returns a description of the video device at \a index.
+ \since 1.0
+*/
+
+/*!
+ \fn QVideoDeviceControl::deviceIcon(int index) const
+
+ Returns an icon for the video device at \a index.
+ \since 1.0
+*/
+
+/*!
+ \fn QVideoDeviceControl::defaultDevice() const
+
+ Returns the index of the default video device.
+ \since 1.0
+*/
+
+/*!
+ \fn QVideoDeviceControl::selectedDevice() const
+
+ Returns the index of the selected video device.
+ \since 1.0
+*/
+
+/*!
+ \fn QVideoDeviceControl::setSelectedDevice(int index)
+
+ Sets the selected video device \a index.
+ \since 1.0
+*/
+
+/*!
+ \fn QVideoDeviceControl::devicesChanged()
+
+ Signals that the list of available video devices has changed.
+ \since 1.0
+*/
+
+/*!
+ \fn QVideoDeviceControl::selectedDeviceChanged(int index)
+
+ Signals that the selected video device \a index has changed.
+ \since 1.0
+*/
+
+/*!
+ \fn QVideoDeviceControl::selectedDeviceChanged(const QString &name)
+
+ Signals that the selected video device \a name has changed.
+ \since 1.0
+*/
+
+#include "moc_qvideodevicecontrol.cpp"
+QT_END_NAMESPACE
+
diff --git a/src/multimedia/controls/qvideodevicecontrol.h b/src/multimedia/controls/qvideodevicecontrol.h
new file mode 100644
index 000000000..6f44c4671
--- /dev/null
+++ b/src/multimedia/controls/qvideodevicecontrol.h
@@ -0,0 +1,88 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QVIDEODEVICECONTROL_H
+#define QVIDEODEVICECONTROL_H
+
+#include "qmediacontrol.h"
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Multimedia)
+
+class Q_MULTIMEDIA_EXPORT QVideoDeviceControl : public QMediaControl
+{
+ Q_OBJECT
+
+public:
+ virtual ~QVideoDeviceControl();
+
+ virtual int deviceCount() const = 0;
+
+ virtual QString deviceName(int index) const = 0;
+ virtual QString deviceDescription(int index) const = 0;
+ virtual QIcon deviceIcon(int index) const = 0;
+
+ virtual int defaultDevice() const = 0;
+ virtual int selectedDevice() const = 0;
+
+public Q_SLOTS:
+ virtual void setSelectedDevice(int index) = 0;
+
+Q_SIGNALS:
+ void selectedDeviceChanged(int index);
+ void selectedDeviceChanged(const QString &deviceName);
+ void devicesChanged();
+
+protected:
+ QVideoDeviceControl(QObject *parent = 0);
+};
+
+#define QVideoDeviceControl_iid "com.nokia.Qt.QVideoDeviceControl/1.0"
+Q_MEDIA_DECLARE_CONTROL(QVideoDeviceControl, QVideoDeviceControl_iid)
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // QVIDEODEVICECONTROL_H
diff --git a/src/multimedia/controls/qvideoencodercontrol.cpp b/src/multimedia/controls/qvideoencodercontrol.cpp
new file mode 100644
index 000000000..1551f2cf7
--- /dev/null
+++ b/src/multimedia/controls/qvideoencodercontrol.cpp
@@ -0,0 +1,190 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qvideoencodercontrol.h"
+#include <QtCore/qstringlist.h>
+#include <QtCore/qvariant.h>
+
+QT_BEGIN_NAMESPACE
+
+/*!
+ \class QVideoEncoderControl
+
+ \inmodule QtMultimedia
+ \ingroup multimedia-serv
+ \since 1.0
+
+ \brief The QVideoEncoderControl class provides access to the settings
+ of a media service that performs video encoding.
+
+ If a QMediaService supports encoding video data it will implement
+ QVideoEncoderControl. This control provides information about the limits
+ of restricted video encoder options and allows the selection of a set of
+ video encoder settings as specified in a QVideoEncoderSettings object.
+
+ The functionality provided by this control is exposed to application code
+ through the QMediaRecorder class.
+
+ The interface name of QVideoEncoderControl is \c com.nokia.Qt.QVideoEncoderControl/1.0 as
+ defined in QVideoEncoderControl_iid.
+
+ \sa QMediaRecorder, QVideoEncoderSettings, QMediaService::requestControl()
+*/
+
+/*!
+ \macro QVideoEncoderControl_iid
+
+ \c com.nokia.Qt.QVideoEncoderControl/1.0
+
+ Defines the interface name of the QVideoEncoderControl class.
+
+ \relates QVideoEncoderControl
+*/
+
+/*!
+ Create a new video encoder control object with the given \a parent.
+*/
+QVideoEncoderControl::QVideoEncoderControl(QObject *parent)
+ :QMediaControl(parent)
+{
+}
+
+/*!
+ Destroys a video encoder control.
+*/
+QVideoEncoderControl::~QVideoEncoderControl()
+{
+}
+
+/*!
+ \fn QVideoEncoderControl::supportedVideoCodecs() const
+
+ Returns the list of supported video codecs.
+ \since 1.0
+*/
+
+/*!
+ \fn QVideoEncoderControl::videoCodecDescription(const QString &codec) const
+
+ Returns a description of a video \a codec.
+ \since 1.0
+*/
+
+/*!
+ \fn QVideoEncoderControl::supportedEncodingOptions(const QString &codec) const
+
+ Returns a list of supported encoding options for a video \a codec.
+
+ The names and types of the options in the list is system dependent.
+ \since 1.0
+*/
+
+/*!
+ \fn QVideoEncoderControl::encodingOption(const QString &codec, const QString &option) const
+
+ Returns the value of a video \a codec \a option.
+ \since 1.0
+*/
+
+/*!
+ \fn QVideoEncoderControl::setEncodingOption(const QString &codec, const QString &option, const QVariant &value)
+
+ Sets the \a value of a \a codec specific \a option.
+ \since 1.0
+*/
+
+/*!
+ \fn QVideoEncoderControl::supportedResolutions(const QVideoEncoderSettings &settings = QVideoEncoderSettings(),
+ bool *continuous = 0) const
+
+ Returns a list of supported resolutions.
+
+ If non null video \a settings parameter is passed,
+ the returned list is reduced to resolution supported with partial settings like
+ \l {QVideoEncoderSettings::setCodec()}{video codec} or
+ \l {QVideoEncoderSettings::setFrameRate()}{frame rate} applied.
+
+ If the encoder supports arbitrary resolutions within the supported resolutions range,
+ *\a continuous is set to true, otherwise *\a continuous is set to false.
+
+ \since 1.0
+ \sa QVideoEncoderSettings::resolution()
+*/
+
+/*!
+ \fn QVideoEncoderControl::supportedFrameRates(const QVideoEncoderSettings &settings = QVideoEncoderSettings(),
+ bool *continuous = 0) const
+
+ Returns a list of supported frame rates.
+
+ If non null video \a settings parameter is passed,
+ the returned list is reduced to frame rates supported with partial settings like
+ \l {QVideoEncoderSettings::setCodec()}{video codec} or
+ \l {QVideoEncoderSettings::setResolution()}{video resolution} applied.
+
+ If the encoder supports arbitrary frame rates within the supported range,
+ *\a continuous is set to true, otherwise *\a continuous is set to false.
+
+ \since 1.0
+ \sa QVideoEncoderSettings::frameRate()
+*/
+
+/*!
+ \fn QVideoEncoderControl::videoSettings() const
+
+ Returns the video encoder settings.
+
+ The returned value may be different tha passed to QVideoEncoderControl::setVideoSettings()
+ if the settings contains the default or undefined parameters.
+ In this case if the undefined parameters are already resolved, they should be returned.
+ \since 1.0
+*/
+
+/*!
+ \fn QVideoEncoderControl::setVideoSettings(const QVideoEncoderSettings &settings)
+
+ Sets the selected video encoder \a settings.
+ \since 1.0
+*/
+
+#include "moc_qvideoencodercontrol.cpp"
+QT_END_NAMESPACE
+
diff --git a/src/multimedia/controls/qvideoencodercontrol.h b/src/multimedia/controls/qvideoencodercontrol.h
new file mode 100644
index 000000000..343af8039
--- /dev/null
+++ b/src/multimedia/controls/qvideoencodercontrol.h
@@ -0,0 +1,98 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QVIDEOENCODERCONTROL_H
+#define QVIDEOENCODERCONTROL_H
+
+#include "qmediacontrol.h"
+#include "qmediarecorder.h"
+
+#include <QtCore/qpair.h>
+#include <QtCore/qsize.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Multimedia)
+
+class QByteArray;
+class QStringList;
+QT_END_NAMESPACE
+
+QT_BEGIN_NAMESPACE
+
+class Q_MULTIMEDIA_EXPORT QVideoEncoderControl : public QMediaControl
+{
+ Q_OBJECT
+
+public:
+ virtual ~QVideoEncoderControl();
+
+ virtual QList<QSize> supportedResolutions(const QVideoEncoderSettings &settings,
+ bool *continuous = 0) const = 0;
+
+ virtual QList<qreal> supportedFrameRates(const QVideoEncoderSettings &settings,
+ bool *continuous = 0) const = 0;
+
+ virtual QStringList supportedVideoCodecs() const = 0;
+ virtual QString videoCodecDescription(const QString &codecName) const = 0;
+
+ virtual QVideoEncoderSettings videoSettings() const = 0;
+ virtual void setVideoSettings(const QVideoEncoderSettings &settings) = 0;
+
+ virtual QStringList supportedEncodingOptions(const QString &codec) const = 0;
+ virtual QVariant encodingOption(const QString &codec, const QString &name) const = 0;
+ virtual void setEncodingOption(const QString &codec, const QString &name, const QVariant &value) = 0;
+
+protected:
+ QVideoEncoderControl(QObject *parent = 0);
+};
+
+#define QVideoEncoderControl_iid "com.nokia.Qt.QVideoEncoderControl/1.0"
+Q_MEDIA_DECLARE_CONTROL(QVideoEncoderControl, QVideoEncoderControl_iid)
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+
+#endif
diff --git a/src/multimedia/controls/qvideorenderercontrol.cpp b/src/multimedia/controls/qvideorenderercontrol.cpp
new file mode 100644
index 000000000..99142261a
--- /dev/null
+++ b/src/multimedia/controls/qvideorenderercontrol.cpp
@@ -0,0 +1,114 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qvideorenderercontrol.h"
+
+#include "qmediacontrol_p.h"
+
+QT_BEGIN_NAMESPACE
+
+/*!
+ \class QVideoRendererControl
+
+
+ \brief The QVideoRendererControl class provides a control for rendering
+ to a video surface.
+
+ \inmodule QtMultimedia
+ \ingroup multimedia-serv
+ \since 1.0
+
+ Using the surface() property of QVideoRendererControl a
+ QAbstractVideoSurface may be set as the video render target of a
+ QMediaService.
+
+ \snippet doc/src/snippets/multimedia-snippets/video.cpp Video renderer control
+
+ QVideoRendererControl is one of a number of possible video output controls.
+
+ The interface name of QVideoRendererControl is \c com.nokia.Qt.QVideoRendererControl/1.0 as
+ defined in QVideoRendererControl_iid.
+
+ \sa QMediaService::requestControl(), QVideoWidget
+*/
+
+/*!
+ \macro QVideoRendererControl_iid
+
+ \c com.nokia.Qt.QVideoRendererControl/1.0
+
+ Defines the interface name of the QVideoRendererControl class.
+
+ \relates QVideoRendererControl
+*/
+
+/*!
+ Constructs a new video renderer media end point with the given \a parent.
+*/
+QVideoRendererControl::QVideoRendererControl(QObject *parent)
+ : QMediaControl(parent)
+{
+}
+
+/*!
+ Destroys a video renderer media end point.
+*/
+QVideoRendererControl::~QVideoRendererControl()
+{
+}
+
+/*!
+ \fn QVideoRendererControl::surface() const
+
+ Returns the surface a video producer renders to.
+ \since 1.0
+*/
+
+/*!
+ \fn QVideoRendererControl::setSurface(QAbstractVideoSurface *surface)
+
+ Sets the \a surface a video producer renders to.
+ \since 1.0
+*/
+
+#include "moc_qvideorenderercontrol.cpp"
+QT_END_NAMESPACE
+
diff --git a/src/multimedia/controls/qvideorenderercontrol.h b/src/multimedia/controls/qvideorenderercontrol.h
new file mode 100644
index 000000000..b3a70837c
--- /dev/null
+++ b/src/multimedia/controls/qvideorenderercontrol.h
@@ -0,0 +1,81 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QVIDEORENDERERCONTROL_H
+#define QVIDEORENDERERCONTROL_H
+
+#include "qmediacontrol.h"
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Multimedia)
+
+class QAbstractVideoSurface;
+QT_END_NAMESPACE
+
+QT_BEGIN_NAMESPACE
+
+
+class Q_MULTIMEDIA_EXPORT QVideoRendererControl : public QMediaControl
+{
+ Q_OBJECT
+
+public:
+ ~QVideoRendererControl();
+
+ virtual QAbstractVideoSurface *surface() const = 0;
+ virtual void setSurface(QAbstractVideoSurface *surface) = 0;
+
+protected:
+ QVideoRendererControl(QObject *parent = 0);
+};
+
+#define QVideoRendererControl_iid "com.nokia.Qt.QVideoRendererControl/1.0"
+Q_MEDIA_DECLARE_CONTROL(QVideoRendererControl, QVideoRendererControl_iid)
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+
+#endif // QVIDEORENDERERCONTROL_H