summaryrefslogtreecommitdiffstats
path: root/src/multimedia
diff options
context:
space:
mode:
authorLing Hu <ling.hu@nokia.com>2012-01-03 13:59:02 +1000
committerQt by Nokia <qt-info@nokia.com>2012-01-04 03:43:32 +0100
commit093a3efbf3c98226652113ad78ae289a247c8a2c (patch)
tree3625ebe0446dca8baefc12391d2f7a3d5faa90bd /src/multimedia
parent45a3823631413789678ce479c9f509100964064d (diff)
Add new gapless playback control interface
Change-Id: If14c20af6da81dd65177102c9b955e3ebd40c722 Reviewed-by: Mithra Pattison <mithra.pattison@nokia.com> Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
Diffstat (limited to 'src/multimedia')
-rw-r--r--src/multimedia/multimedia.pro7
-rw-r--r--src/multimedia/qmediagaplessplaybackcontrol.cpp165
-rw-r--r--src/multimedia/qmediagaplessplaybackcontrol.h81
3 files changed, 250 insertions, 3 deletions
diff --git a/src/multimedia/multimedia.pro b/src/multimedia/multimedia.pro
index e8ea8e48a..120f8faf6 100644
--- a/src/multimedia/multimedia.pro
+++ b/src/multimedia/multimedia.pro
@@ -19,7 +19,6 @@ load(qt_module_config)
HEADERS += qtmultimediaversion.h
-
PRIVATE_HEADERS += \
qmediacontrol_p.h \
qmediaobject_p.h \
@@ -72,7 +71,8 @@ PUBLIC_HEADERS += \
qmediatimerange.h \
qmedianetworkaccesscontrol.h \
qmediaenumdebug.h \
- qtmultimediadefs.h
+ qtmultimediadefs.h \
+ qmediagaplessplaybackcontrol.h
SOURCES += qmediacontrol.cpp \
qmediaobject.cpp \
@@ -115,7 +115,8 @@ SOURCES += qmediacontrol.cpp \
qmedianetworkaccesscontrol.cpp \
qvideosurfaceoutput.cpp \
qmediabackgroundplaybackcontrol.cpp \
- qtmedianamespace.cpp
+ qtmedianamespace.cpp \
+ qmediagaplessplaybackcontrol.cpp
#Camera
PUBLIC_HEADERS += \
diff --git a/src/multimedia/qmediagaplessplaybackcontrol.cpp b/src/multimedia/qmediagaplessplaybackcontrol.cpp
new file mode 100644
index 000000000..84363e00c
--- /dev/null
+++ b/src/multimedia/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/qmediagaplessplaybackcontrol.h b/src/multimedia/qmediagaplessplaybackcontrol.h
new file mode 100644
index 000000000..852bdb222
--- /dev/null
+++ b/src/multimedia/qmediagaplessplaybackcontrol.h
@@ -0,0 +1,81 @@
+/****************************************************************************
+**
+** 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
+{
+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