diff options
Diffstat (limited to 'src/multimedia')
-rw-r--r-- | src/multimedia/multimedia.pro | 9 | ||||
-rw-r--r-- | src/multimedia/qmediaresourcepolicy_p.cpp | 114 | ||||
-rw-r--r-- | src/multimedia/qmediaresourcepolicy_p.h | 74 | ||||
-rw-r--r-- | src/multimedia/qmediaresourcepolicyplugin_p.cpp | 55 | ||||
-rw-r--r-- | src/multimedia/qmediaresourcepolicyplugin_p.h | 78 | ||||
-rw-r--r-- | src/multimedia/qmediaresourceset_p.cpp | 51 | ||||
-rw-r--r-- | src/multimedia/qmediaresourceset_p.h | 83 |
7 files changed, 463 insertions, 1 deletions
diff --git a/src/multimedia/multimedia.pro b/src/multimedia/multimedia.pro index d29ba7291..5a77e3413 100644 --- a/src/multimedia/multimedia.pro +++ b/src/multimedia/multimedia.pro @@ -19,6 +19,7 @@ load(qt_module_config) HEADERS += qtmultimediaversion.h + INCLUDEPATH *= . PRIVATE_HEADERS += \ @@ -27,6 +28,9 @@ PRIVATE_HEADERS += \ qmediapluginloader_p.h \ qmediaservice_p.h \ qmediaserviceprovider_p.h \ + qmediaresourcepolicyplugin_p.h \ + qmediaresourcepolicy_p.h \ + qmediaresourceset_p.h PUBLIC_HEADERS += \ qmediabindableinterface.h \ @@ -47,7 +51,10 @@ SOURCES += \ qmediaservice.cpp \ qmediaserviceprovider.cpp \ qmediatimerange.cpp \ - qtmedianamespace.cpp + qtmedianamespace.cpp \ + qmediaresourcepolicyplugin_p.cpp \ + qmediaresourcepolicy_p.cpp \ + qmediaresourceset_p.cpp include(audio/audio.pri) include(camera/camera.pri) diff --git a/src/multimedia/qmediaresourcepolicy_p.cpp b/src/multimedia/qmediaresourcepolicy_p.cpp new file mode 100644 index 000000000..630870c05 --- /dev/null +++ b/src/multimedia/qmediaresourcepolicy_p.cpp @@ -0,0 +1,114 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** 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 "qmediaresourcepolicy_p.h" +#include "qmediapluginloader_p.h" +#include "qmediaresourcepolicyplugin_p.h" +#include "qmediaresourceset_p.h" + +namespace { + class QDummyMediaPlayerResourceSet : public QMediaPlayerResourceSetInterface + { + public: + QDummyMediaPlayerResourceSet(QObject *parent) + : QMediaPlayerResourceSetInterface(parent) + { + } + + bool isVideoEnabled() const + { + return true; + } + + bool isGranted() const + { + return true; + } + + bool isAvailable() const + { + return true; + } + + void acquire() {} + void release() {} + void setVideoEnabled(bool) {} + }; +} + +QT_BEGIN_NAMESPACE + +Q_GLOBAL_STATIC_WITH_ARGS(QMediaPluginLoader, resourcePolicyLoader, + (QMediaResourceSetFactoryInterface_iid, QLatin1String("resourcepolicy"), Qt::CaseInsensitive)) + +Q_GLOBAL_STATIC(QObject, dummyRoot) + +QObject* QMediaResourcePolicy::createResourceSet(const QString& interfaceId) +{ + QMediaResourceSetFactoryInterface *factory = + qobject_cast<QMediaResourceSetFactoryInterface*>(resourcePolicyLoader() + ->instance(QLatin1String("default"))); + if (!factory) + return 0; + QObject* obj = factory->create(interfaceId); + if (!obj) { + if (interfaceId == QLatin1String(QMediaPlayerResourceSetInterface_iid)) { + obj = new QDummyMediaPlayerResourceSet(dummyRoot()); + } + } + Q_ASSERT(obj); + return obj; +} + +void QMediaResourcePolicy::destroyResourceSet(QObject* resourceSet) +{ + if (resourceSet->parent() == dummyRoot()) { + delete resourceSet; + return; + } + QMediaResourceSetFactoryInterface *factory = + qobject_cast<QMediaResourceSetFactoryInterface*>(resourcePolicyLoader() + ->instance(QLatin1String("default"))); + if (!factory) + return; + return factory->destroy(resourceSet); +} +QT_END_NAMESPACE diff --git a/src/multimedia/qmediaresourcepolicy_p.h b/src/multimedia/qmediaresourcepolicy_p.h new file mode 100644 index 000000000..c21d36f47 --- /dev/null +++ b/src/multimedia/qmediaresourcepolicy_p.h @@ -0,0 +1,74 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** 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 QMEDIARESOURCEPOLICY_H +#define QMEDIARESOURCEPOLICY_H + +#include <QObject> + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +QT_MODULE(Multimedia) + +class Q_MULTIMEDIA_EXPORT QMediaResourcePolicy +{ +public: + //a dummy object will always be provided if the interfaceId is not supported + template<typename T> + static T* createResourceSet(const QString& interfaceId); + static void destroyResourceSet(QObject* resourceSet); +private: + static QObject* createResourceSet(const QString& interfaceId); +}; + +template<typename T> +T* QMediaResourcePolicy::createResourceSet(const QString& interfaceId) +{ + return qobject_cast<T*>(QMediaResourcePolicy::createResourceSet(interfaceId)); +} + +QT_END_NAMESPACE + +QT_END_HEADER + +#endif // QMEDIARESOURCEPOLICY_H diff --git a/src/multimedia/qmediaresourcepolicyplugin_p.cpp b/src/multimedia/qmediaresourcepolicyplugin_p.cpp new file mode 100644 index 000000000..e1a005ac7 --- /dev/null +++ b/src/multimedia/qmediaresourcepolicyplugin_p.cpp @@ -0,0 +1,55 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** 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 "qmediaresourcepolicyplugin_p.h" + +QT_BEGIN_NAMESPACE + +QMediaResourcePolicyPlugin::QMediaResourcePolicyPlugin(QObject *parent) + : QObject(parent) +{ +} + +QMediaResourcePolicyPlugin::~QMediaResourcePolicyPlugin() +{ +} + +QT_END_NAMESPACE diff --git a/src/multimedia/qmediaresourcepolicyplugin_p.h b/src/multimedia/qmediaresourcepolicyplugin_p.h new file mode 100644 index 000000000..7e6d2e77d --- /dev/null +++ b/src/multimedia/qmediaresourcepolicyplugin_p.h @@ -0,0 +1,78 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** 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 QRESOURCEPOLICYPLUGIN_P_H +#define QRESOURCEPOLICYPLUGIN_P_H + +#include <QObject> +#include <qtmultimediadefs.h> + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +QT_MODULE(Multimedia) + +struct Q_MULTIMEDIA_EXPORT QMediaResourceSetFactoryInterface +{ + virtual QObject* create(const QString& interfaceId) = 0; + virtual void destroy(QObject *resourceSet) = 0; +}; + +#define QMediaResourceSetFactoryInterface_iid \ + "org.qt-project.qt.mediaresourcesetfactory/5.0" +Q_DECLARE_INTERFACE(QMediaResourceSetFactoryInterface, QMediaResourceSetFactoryInterface_iid) + +class Q_MULTIMEDIA_EXPORT QMediaResourcePolicyPlugin : public QObject, public QMediaResourceSetFactoryInterface +{ + Q_OBJECT + Q_INTERFACES(QMediaResourceSetFactoryInterface) + +public: + QMediaResourcePolicyPlugin(QObject *parent = 0); + ~QMediaResourcePolicyPlugin(); +}; + +QT_END_NAMESPACE + +QT_END_HEADER + +#endif // QRESOURCEPOLICYPLUGIN_P_H diff --git a/src/multimedia/qmediaresourceset_p.cpp b/src/multimedia/qmediaresourceset_p.cpp new file mode 100644 index 000000000..97aa34d6e --- /dev/null +++ b/src/multimedia/qmediaresourceset_p.cpp @@ -0,0 +1,51 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** 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 "qmediaresourceset_p.h" + +QT_BEGIN_NAMESPACE + +QMediaPlayerResourceSetInterface::QMediaPlayerResourceSetInterface(QObject *parent) + : QObject(parent) +{ +} + +QT_END_NAMESPACE diff --git a/src/multimedia/qmediaresourceset_p.h b/src/multimedia/qmediaresourceset_p.h new file mode 100644 index 000000000..c58320c27 --- /dev/null +++ b/src/multimedia/qmediaresourceset_p.h @@ -0,0 +1,83 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** 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 QMEDIARESOURCESET_P_H +#define QMEDIARESOURCESET_P_H +#include <QObject> +#include <qtmultimediadefs.h> + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +QT_MODULE(Multimedia) + +#define QMediaPlayerResourceSetInterface_iid \ + "org.qt-project.qt.mediaplayerresourceset/5.0" + +class Q_MULTIMEDIA_EXPORT QMediaPlayerResourceSetInterface : public QObject +{ + Q_OBJECT +public: + virtual bool isVideoEnabled() const = 0; + virtual bool isGranted() const = 0; + virtual bool isAvailable() const = 0; + + virtual void acquire() = 0; + virtual void release() = 0; + virtual void setVideoEnabled(bool enabled) = 0; + +Q_SIGNALS: + void resourcesGranted(); + void resourcesLost(); + void resourcesDenied(); + void resourcesReleased(); + void availabilityChanged(bool available); + +protected: + QMediaPlayerResourceSetInterface(QObject *parent = 0); +}; + +QT_END_NAMESPACE + +QT_END_HEADER + +#endif // QMEDIARESOURCESET_P_H |