summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xconfigure19
-rwxr-xr-xconfigure.exebin1008128 -> 1221632 bytes
-rw-r--r--demos/multimedia/player/player.cpp12
-rw-r--r--demos/multimedia/player/player.h2
-rw-r--r--src/multimedia/base/qmediacontent.cpp13
-rw-r--r--src/multimedia/base/qmediacontent.h2
-rw-r--r--src/multimedia/base/qmediaserviceprovider.cpp2
-rw-r--r--src/multimedia/qml/multimediadeclarative.cpp68
-rw-r--r--src/multimedia/qml/multimediadeclarative.h60
-rw-r--r--src/multimedia/qml/qdeclarativeaudio_p.h13
-rw-r--r--src/multimedia/qml/qdeclarativemediabase_p.h10
-rw-r--r--src/multimedia/qml/qdeclarativevideo_p.h13
-rw-r--r--src/multimedia/qml/qmetadatacontrolmetaobject_p.h11
-rw-r--r--src/multimedia/qml/qml.pri4
-rw-r--r--src/multimedia/qml/wavedecoder_p.h11
-rw-r--r--src/plugins/mediaservices/directshow/dsserviceplugin.cpp2
-rw-r--r--src/plugins/mediaservices/directshow/mediaplayer/directshowiosource.cpp4
-rw-r--r--src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamermetadataprovider.cpp2
-rw-r--r--src/plugins/mediaservices/gstreamer/qgstreamerserviceplugin.cpp7
-rw-r--r--src/plugins/mediaservices/gstreamer/qgstreamervideoinputdevicecontrol.cpp4
-rw-r--r--src/plugins/mediaservices/gstreamer/qgstxvimagebuffer.cpp4
-rw-r--r--src/plugins/mediaservices/gstreamer/qvideosurfacegstsink.cpp3
-rw-r--r--src/plugins/mediaservices/mediaservices.pro24
-rw-r--r--src/plugins/mediaservices/qt7/mediaplayer/qt7playerservice.mm8
-rw-r--r--src/plugins/mediaservices/qt7/mediaplayer/qt7playersession.mm6
-rw-r--r--src/plugins/mediaservices/qt7/qt7movierenderer.mm25
-rw-r--r--src/plugins/mediaservices/qt7/qt7movievideowidget.mm4
-rw-r--r--src/plugins/mediaservices/qt7/qt7movieviewrenderer.mm11
-rw-r--r--tests/auto/qmediacontent/qmediacontent.pro2
-rw-r--r--tests/auto/qmediacontent/tst_qmediacontent.cpp13
-rw-r--r--tools/configure/configure.pro1
-rw-r--r--tools/configure/configureapp.cpp13
32 files changed, 309 insertions, 64 deletions
diff --git a/configure b/configure
index 1c3c99b..43f7189 100755
--- a/configure
+++ b/configure
@@ -676,6 +676,7 @@ CFG_RELEASE_QMAKE=no
CFG_PHONON=auto
CFG_PHONON_BACKEND=yes
CFG_MULTIMEDIA=yes
+CFG_MEDIASERVICE=yes
CFG_AUDIO_BACKEND=yes
CFG_SVG=yes
CFG_DECLARATIVE=auto
@@ -924,7 +925,7 @@ while [ "$#" -gt 0 ]; do
VAL=no
;;
#Qt style yes options
- -incremental|-qvfb|-profile|-shared|-static|-sm|-xinerama|-xshape|-xsync|-xinput|-reduce-exports|-pch|-separate-debug-info|-stl|-freetype|-xcursor|-xfixes|-xrandr|-xrender|-mitshm|-fontconfig|-xkb|-nis|-qdbus|-dbus|-dbus-linked|-glib|-gstreamer|-gtkstyle|-cups|-iconv|-largefile|-h|-help|-v|-verbose|-debug|-release|-fast|-accessibility|-confirm-license|-gnumake|-framework|-qt3support|-debug-and-release|-exceptions|-cocoa|-carbon|-universal|-prefix-install|-silent|-armfpa|-optimized-qmake|-dwarf2|-reduce-relocations|-sse|-openssl|-openssl-linked|-ptmalloc|-xmlpatterns|-phonon|-phonon-backend|-multimedia|-audio-backend|-svg|-declarative|-webkit|-javascript-jit|-script|-scripttools|-rpath|-force-pkg-config)
+ -incremental|-qvfb|-profile|-shared|-static|-sm|-xinerama|-xshape|-xsync|-xinput|-reduce-exports|-pch|-separate-debug-info|-stl|-freetype|-xcursor|-xfixes|-xrandr|-xrender|-mitshm|-fontconfig|-xkb|-nis|-qdbus|-dbus|-dbus-linked|-glib|-gstreamer|-gtkstyle|-cups|-iconv|-largefile|-h|-help|-v|-verbose|-debug|-release|-fast|-accessibility|-confirm-license|-gnumake|-framework|-qt3support|-debug-and-release|-exceptions|-cocoa|-carbon|-universal|-prefix-install|-silent|-armfpa|-optimized-qmake|-dwarf2|-reduce-relocations|-sse|-openssl|-openssl-linked|-ptmalloc|-xmlpatterns|-phonon|-phonon-backend|-multimedia|-mediaservice|-audio-backend|-svg|-declarative|-webkit|-javascript-jit|-script|-scripttools|-rpath|-force-pkg-config)
VAR=`echo $1 | sed "s,^-\(.*\),\1,"`
VAL=yes
;;
@@ -2105,6 +2106,13 @@ while [ "$#" -gt 0 ]; do
UNKNOWN_OPT=yes
fi
;;
+ mediaservice)
+ if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
+ CFG_MEDIASERVICE="$VAL"
+ else
+ UNKNOWN_OPT=yes
+ fi
+ ;;
audio-backend)
if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
CFG_AUDIO_BACKEND="$VAL"
@@ -3318,7 +3326,8 @@ Usage: $relconf [-h] [-prefix <dir>] [-prefix-install] [-bindir <dir>] [-libdir
[-qtnamespace <namespace>] [-qtlibinfix <infix>] [-separate-debug-info] [-armfpa]
[-no-optimized-qmake] [-optimized-qmake] [-no-xmlpatterns] [-xmlpatterns]
[-no-multimedia] [-multimedia] [-no-phonon] [-phonon] [-no-phonon-backend] [-phonon-backend]
- [-no-audio-backend] [-audio-backend] [-no-openssl] [-openssl] [-openssl-linked]
+ [-no-mediaservice] [-mediaservice] [-no-audio-backend] [-audio-backend]
+ [-no-openssl] [-openssl] [-openssl-linked]
[-no-gtkstyle] [-gtkstyle] [-no-svg] [-svg] [-no-webkit] [-webkit] [-no-javascript-jit] [-javascript-jit]
[-no-script] [-script] [-no-scripttools] [-scripttools] [-no-declarative] [-declarative]
@@ -3458,6 +3467,9 @@ fi
-no-multimedia ..... Do not build the QtMultimedia module.
+ -multimedia ........ Build the QtMultimedia module.
+ -no-mediaservice.... Do not build platform mediaservice plugin.
+ + -mediaservice ...... Build the platform mediaservice plugin.
+
-no-audio-backend .. Do not build the platform audio backend into QtMultimedia.
+ -audio-backend ..... Build the platform audio backend into QtMultimedia if available.
@@ -6537,6 +6549,9 @@ if [ "$CFG_MULTIMEDIA" = "no" ]; then
QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_MULTIMEDIA"
else
QT_CONFIG="$QT_CONFIG multimedia"
+ if [ "$CFG_MEDIASERVICE" = "yes" ]; then
+ QT_CONFIG="$QT_CONFIG mediaservice"
+ fi
fi
if [ "$CFG_AUDIO_BACKEND" = "yes" ]; then
diff --git a/configure.exe b/configure.exe
index 9974236..f937ea2 100755
--- a/configure.exe
+++ b/configure.exe
Binary files differ
diff --git a/demos/multimedia/player/player.cpp b/demos/multimedia/player/player.cpp
index 64b1f25..49d18cb 100644
--- a/demos/multimedia/player/player.cpp
+++ b/demos/multimedia/player/player.cpp
@@ -99,7 +99,7 @@ Player::Player(QWidget *parent)
connect(controls, SIGNAL(pause()), player, SLOT(pause()));
connect(controls, SIGNAL(stop()), player, SLOT(stop()));
connect(controls, SIGNAL(next()), playlist, SLOT(next()));
- connect(controls, SIGNAL(previous()), playlist, SLOT(previous()));
+ connect(controls, SIGNAL(previous()), this, SLOT(previousClicked()));
connect(controls, SIGNAL(changeVolume(int)), player, SLOT(setVolume(int)));
connect(controls, SIGNAL(changeMuting(bool)), player, SLOT(setMuted(bool)));
connect(controls, SIGNAL(changeRate(qreal)), player, SLOT(setPlaybackRate(qreal)));
@@ -200,6 +200,16 @@ void Player::metaDataChanged()
}
}
+void Player::previousClicked()
+{
+ // Go to previous track if we are within the first 5 seconds of playback
+ // Otherwise, seek to the beginning.
+ if(player->position() <= 5000)
+ playlist->previous();
+ else
+ player->setPosition(0);
+}
+
void Player::jump(const QModelIndex &index)
{
if (index.isValid()) {
diff --git a/demos/multimedia/player/player.h b/demos/multimedia/player/player.h
index 0ad609b..1de8b1a 100644
--- a/demos/multimedia/player/player.h
+++ b/demos/multimedia/player/player.h
@@ -77,6 +77,8 @@ private slots:
void positionChanged(qint64 progress);
void metaDataChanged();
+ void previousClicked();
+
void seek(int seconds);
void jump(const QModelIndex &index);
void playlistPositionChanged(int);
diff --git a/src/multimedia/base/qmediacontent.cpp b/src/multimedia/base/qmediacontent.cpp
index 3e32af0..fd519c6 100644
--- a/src/multimedia/base/qmediacontent.cpp
+++ b/src/multimedia/base/qmediacontent.cpp
@@ -109,6 +109,19 @@ QMediaContent::QMediaContent(const QUrl &url):
}
/*!
+ Constructs a media content with \a request providing a reference to the content.
+
+ This constructor can be used to reference media content via network protocols such as HTTP.
+ This may include additional information required to obtain the resource, such as Cookies or HTTP headers.
+*/
+
+QMediaContent::QMediaContent(const QNetworkRequest &request):
+ d(new QMediaContentPrivate)
+{
+ d->resources << QMediaResource(request);
+}
+
+/*!
Constructs a media content with \a resource providing a reference to the content.
*/
diff --git a/src/multimedia/base/qmediacontent.h b/src/multimedia/base/qmediacontent.h
index 1ea4898..b6f3017 100644
--- a/src/multimedia/base/qmediacontent.h
+++ b/src/multimedia/base/qmediacontent.h
@@ -46,6 +46,7 @@
#include <QtCore/qshareddata.h>
#include <QtMultimedia/qmediaresource.h>
+#include <QtNetwork/qnetworkrequest.h>
QT_BEGIN_HEADER
@@ -60,6 +61,7 @@ class Q_MULTIMEDIA_EXPORT QMediaContent
public:
QMediaContent();
QMediaContent(const QUrl &contentUrl);
+ QMediaContent(const QNetworkRequest &contentRequest);
QMediaContent(const QMediaResource &contentResource);
QMediaContent(const QMediaResourceList &resources);
QMediaContent(const QMediaContent &other);
diff --git a/src/multimedia/base/qmediaserviceprovider.cpp b/src/multimedia/base/qmediaserviceprovider.cpp
index 76377d9..02c9b29 100644
--- a/src/multimedia/base/qmediaserviceprovider.cpp
+++ b/src/multimedia/base/qmediaserviceprovider.cpp
@@ -594,8 +594,6 @@ QMediaServiceProvider *QMediaServiceProvider::defaultServiceProvider()
#endif
}
-QT_END_NAMESPACE
-
/*!
\class QMediaServiceProviderPlugin
\preliminary
diff --git a/src/multimedia/qml/multimediadeclarative.cpp b/src/multimedia/qml/multimediadeclarative.cpp
new file mode 100644
index 0000000..be49915
--- /dev/null
+++ b/src/multimedia/qml/multimediadeclarative.cpp
@@ -0,0 +1,68 @@
+/****************************************************************************
+**
+** 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 QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, 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.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtMultimedia/multimediaqml.h>
+#include <QtMultimedia/private/qsoundeffect_p.h>
+#include <QtMultimedia/private/qmlaudio_p.h>
+#include <QtMultimedia/private/qmlgraphicsvideo_p.h>
+
+
+QT_BEGIN_NAMESPACE
+
+namespace QtMultimedia
+{
+
+/*!
+ Register the Multimedia QML elements.
+ \internal
+*/
+
+void qRegisterQmlElements()
+{
+ qmlRegisterType<QSoundEffect>("Qt.multimedia", 4, 7, "SoundEffect", "SoundEffect");
+ qmlRegisterType<QmlAudio>("Qt.multimedia", 4, 7, "Audio", "Audio");
+ qmlRegisterType<QmlGraphicsVideo>("Qt.multimedia", 4, 7, "Video", "Video");
+}
+
+}
+
+QT_END_NAMESPACE
+
diff --git a/src/multimedia/qml/multimediadeclarative.h b/src/multimedia/qml/multimediadeclarative.h
new file mode 100644
index 0000000..41274c8
--- /dev/null
+++ b/src/multimedia/qml/multimediadeclarative.h
@@ -0,0 +1,60 @@
+/****************************************************************************
+**
+** 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 QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, 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.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QTMULTIMEDIA_QML_H
+#define QTMULTIMEDIA_QML_H
+
+#include <QtCore/qglobal.h>
+
+QT_BEGIN_HEADER
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Multimedia)
+
+namespace QtMultimedia
+{
+extern void Q_MULTIMEDIA_EXPORT qRegisterQmlElements();
+}
+
+QT_END_NAMESPACE
+QT_END_HEADER
+
+#endif // ifndef QTMULTIMEDIA_QML_H
diff --git a/src/multimedia/qml/qdeclarativeaudio_p.h b/src/multimedia/qml/qdeclarativeaudio_p.h
index d28c1dd..a3fe1e8 100644
--- a/src/multimedia/qml/qdeclarativeaudio_p.h
+++ b/src/multimedia/qml/qdeclarativeaudio_p.h
@@ -42,7 +42,18 @@
#ifndef QDECLARATIVEAUDIO_P_H
#define QDECLARATIVEAUDIO_P_H
-#include <QtMultimedia/private/qdeclarativemediabase_p.h>
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include <QtMultimedia/private/qmlmediabase_p.h>
#include <QtCore/qbasictimer.h>
#include <QtDeclarative/qdeclarativeitem.h>
diff --git a/src/multimedia/qml/qdeclarativemediabase_p.h b/src/multimedia/qml/qdeclarativemediabase_p.h
index cee190c..2fc48db 100644
--- a/src/multimedia/qml/qdeclarativemediabase_p.h
+++ b/src/multimedia/qml/qdeclarativemediabase_p.h
@@ -42,6 +42,16 @@
#ifndef QDECLARATIVEMEDIABASE_P_H
#define QDECLARATIVEMEDIABASE_P_H
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
#include <QtCore/qbasictimer.h>
#include <QtMultimedia/qmediaplayer.h>
diff --git a/src/multimedia/qml/qdeclarativevideo_p.h b/src/multimedia/qml/qdeclarativevideo_p.h
index 164edae..8d9ec20 100644
--- a/src/multimedia/qml/qdeclarativevideo_p.h
+++ b/src/multimedia/qml/qdeclarativevideo_p.h
@@ -42,7 +42,18 @@
#ifndef QDECLARATIVEVIDEO_H
#define QDECLARATIVEVIDEO_H
-#include <QtMultimedia/private/qdeclarativemediabase_p.h>
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include <QtMultimedia/private/qmlmediabase_p.h>
#include <QtMultimedia/qgraphicsvideoitem.h>
diff --git a/src/multimedia/qml/qmetadatacontrolmetaobject_p.h b/src/multimedia/qml/qmetadatacontrolmetaobject_p.h
index c0fd4e8..ec4df05 100644
--- a/src/multimedia/qml/qmetadatacontrolmetaobject_p.h
+++ b/src/multimedia/qml/qmetadatacontrolmetaobject_p.h
@@ -42,6 +42,17 @@
#ifndef QMETADATACONTROLMETAOBJECT_P_H
#define QMETADATACONTROLMETAOJBECT_P_H
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
#include <QtCore/qmetaobject.h>
#include <QtMultimedia/qtmedianamespace.h>
diff --git a/src/multimedia/qml/qml.pri b/src/multimedia/qml/qml.pri
index dfc006e..d0ff71d 100644
--- a/src/multimedia/qml/qml.pri
+++ b/src/multimedia/qml/qml.pri
@@ -17,7 +17,7 @@ contains(QT_CONFIG, declarative) {
}
HEADERS += \
- $$PWD/qdeclarative.h \
+ $$PWD/multimediadeclarative.h \
$$PWD/qmetadatacontrolmetaobject_p.h \
$$PWD/qdeclarativeaudio_p.h \
$$PWD/qdeclarativevideo_p.h \
@@ -26,7 +26,7 @@ contains(QT_CONFIG, declarative) {
$$PWD/wavedecoder_p.h
SOURCES += \
- $$PWD/qdeclarative.cpp \
+ $$PWD/multimediadeclarative.cpp \
$$PWD/qmetadatacontrolmetaobject.cpp \
$$PWD/qdeclarativeaudio.cpp \
$$PWD/qdeclarativevideo.cpp \
diff --git a/src/multimedia/qml/wavedecoder_p.h b/src/multimedia/qml/wavedecoder_p.h
index 3bcd90d..00aa14e 100644
--- a/src/multimedia/qml/wavedecoder_p.h
+++ b/src/multimedia/qml/wavedecoder_p.h
@@ -42,6 +42,17 @@
#ifndef WAVEDECODER_H
#define WAVEDECODER_H
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
#include <QtCore/qiodevice.h>
#include <QtMultimedia/qaudioformat.h>
diff --git a/src/plugins/mediaservices/directshow/dsserviceplugin.cpp b/src/plugins/mediaservices/directshow/dsserviceplugin.cpp
index f3ab889..c482fd5 100644
--- a/src/plugins/mediaservices/directshow/dsserviceplugin.cpp
+++ b/src/plugins/mediaservices/directshow/dsserviceplugin.cpp
@@ -94,7 +94,7 @@ QMediaService* DSServicePlugin::create(QString const& key)
return new DirectShowPlayerService;
#endif
- qDebug() << "unsupported key:" << key;
+ qWarning() << "DirectShow service plugin: unsupported service -" << key;
return 0;
}
diff --git a/src/plugins/mediaservices/directshow/mediaplayer/directshowiosource.cpp b/src/plugins/mediaservices/directshow/mediaplayer/directshowiosource.cpp
index c2fb0d4..1dca465 100644
--- a/src/plugins/mediaservices/directshow/mediaplayer/directshowiosource.cpp
+++ b/src/plugins/mediaservices/directshow/mediaplayer/directshowiosource.cpp
@@ -624,11 +624,7 @@ bool DirectShowRcSource::open(const QUrl &url)
m_file.setFileName(QLatin1Char(':') + url.path());
- qDebug("qrc file %s", qPrintable(m_file.fileName()));
-
if (m_file.open(QIODevice::ReadOnly)) {
- qDebug("Size %d", m_file.size());
- qDebug("Sequential %d", int(m_file.isSequential()));
setDevice(&m_file);
diff --git a/src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamermetadataprovider.cpp b/src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamermetadataprovider.cpp
index 49eeb23..4d0ffe4 100644
--- a/src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamermetadataprovider.cpp
+++ b/src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamermetadataprovider.cpp
@@ -41,7 +41,7 @@
#include "qgstreamermetadataprovider.h"
#include "qgstreamerplayersession.h"
-#include <QDebug>
+#include <QtCore/qdebug.h>
#include <gst/gstversion.h>
diff --git a/src/plugins/mediaservices/gstreamer/qgstreamerserviceplugin.cpp b/src/plugins/mediaservices/gstreamer/qgstreamerserviceplugin.cpp
index 9e5f425..589d2b5 100644
--- a/src/plugins/mediaservices/gstreamer/qgstreamerserviceplugin.cpp
+++ b/src/plugins/mediaservices/gstreamer/qgstreamerserviceplugin.cpp
@@ -43,7 +43,6 @@
#include <QtCore/qdebug.h>
#include <QtGui/QIcon>
#include <QtCore/QDir>
-#include <QtCore/QDebug>
#include "qgstreamerserviceplugin.h"
@@ -99,7 +98,7 @@ QMediaService* QGstreamerServicePlugin::create(const QString &key)
return new QGstreamerCaptureService(key);
#endif
- qDebug() << "unsupported key:" << key;
+ qWarning() << "GStreamer service plugin: unsupported service -" << key;
return 0;
}
@@ -145,7 +144,7 @@ void QGstreamerServicePlugin::updateDevices() const
QFileInfoList entries = devDir.entryInfoList(QStringList() << "video*");
foreach( const QFileInfo &entryInfo, entries ) {
- qDebug() << "Try" << entryInfo.filePath();
+// qDebug() << "Try" << entryInfo.filePath();
int fd = ::open(entryInfo.filePath().toLatin1().constData(), O_RDWR );
if (fd == -1)
@@ -172,7 +171,7 @@ void QGstreamerServicePlugin::updateDevices() const
name = entryInfo.fileName();
else
name = QString((const char*)vcap.card);
- qDebug() << "found camera: " << name;
+// qDebug() << "found camera: " << name;
m_cameraDevices.append(entryInfo.filePath().toLocal8Bit());
m_cameraDescriptions.append(name);
diff --git a/src/plugins/mediaservices/gstreamer/qgstreamervideoinputdevicecontrol.cpp b/src/plugins/mediaservices/gstreamer/qgstreamervideoinputdevicecontrol.cpp
index ac9a1e3..94ae847 100644
--- a/src/plugins/mediaservices/gstreamer/qgstreamervideoinputdevicecontrol.cpp
+++ b/src/plugins/mediaservices/gstreamer/qgstreamervideoinputdevicecontrol.cpp
@@ -120,7 +120,7 @@ void QGstreamerVideoInputDeviceControl::update()
QFileInfoList entries = devDir.entryInfoList(QStringList() << "video*");
foreach( const QFileInfo &entryInfo, entries ) {
- qDebug() << "Try" << entryInfo.filePath();
+// qDebug() << "Try" << entryInfo.filePath();
int fd = ::open(entryInfo.filePath().toLatin1().constData(), O_RDWR );
if (fd == -1)
@@ -147,7 +147,7 @@ void QGstreamerVideoInputDeviceControl::update()
name = entryInfo.fileName();
else
name = QString((const char*)vcap.card);
- qDebug() << "found camera: " << name;
+// qDebug() << "found camera: " << name;
m_names.append(entryInfo.filePath());
m_descriptions.append(name);
diff --git a/src/plugins/mediaservices/gstreamer/qgstxvimagebuffer.cpp b/src/plugins/mediaservices/gstreamer/qgstxvimagebuffer.cpp
index 0e47c98..5b99817 100644
--- a/src/plugins/mediaservices/gstreamer/qgstxvimagebuffer.cpp
+++ b/src/plugins/mediaservices/gstreamer/qgstxvimagebuffer.cpp
@@ -182,7 +182,7 @@ void QGstXvImageBufferPool::queuedAlloc()
);
if (!xvBuffer->xvImage) {
- qDebug() << "QGstXvImageBufferPool: XvShmCreateImage failed";
+// qDebug() << "QGstXvImageBufferPool: XvShmCreateImage failed";
m_allocWaitCondition.wakeOne();
return;
}
@@ -192,7 +192,7 @@ void QGstXvImageBufferPool::queuedAlloc()
xvBuffer->shmInfo.readOnly = False;
if (!XShmAttach(QX11Info::display(), &xvBuffer->shmInfo)) {
- qDebug() << "QGstXvImageBufferPool: XShmAttach failed";
+// qDebug() << "QGstXvImageBufferPool: XShmAttach failed";
m_allocWaitCondition.wakeOne();
return;
}
diff --git a/src/plugins/mediaservices/gstreamer/qvideosurfacegstsink.cpp b/src/plugins/mediaservices/gstreamer/qvideosurfacegstsink.cpp
index 9e3807b..402a225 100644
--- a/src/plugins/mediaservices/gstreamer/qvideosurfacegstsink.cpp
+++ b/src/plugins/mediaservices/gstreamer/qvideosurfacegstsink.cpp
@@ -41,9 +41,8 @@
#include <QtMultimedia/QAbstractVideoSurface>
#include <QtMultimedia/QVideoFrame>
-#include <QDebug>
+#include <QtCore/qdebug.h>
#include <QMap>
-#include <QDebug>
#include <QThread>
#include <QtGui/qx11info_x11.h>
diff --git a/src/plugins/mediaservices/mediaservices.pro b/src/plugins/mediaservices/mediaservices.pro
index 55e6aba..0cef605 100644
--- a/src/plugins/mediaservices/mediaservices.pro
+++ b/src/plugins/mediaservices/mediaservices.pro
@@ -1,18 +1,20 @@
TEMPLATE = subdirs
-win32:!wince: SUBDIRS += directshow
+contains(QT_CONFIG, mediaservice) {
+ win32:!wince: SUBDIRS += directshow
-mac: SUBDIRS += qt7
+ mac: SUBDIRS += qt7
-unix:!mac:!symbian {
- TMP_GST_LIBS = \
- gstreamer-0.10 >= 0.10.19 \
- gstreamer-base-0.10 >= 0.10.19 \
- gstreamer-interfaces-0.10 >= 0.10.19 \
- gstreamer-audio-0.10 >= 0.10.19 \
- gstreamer-video-0.10 >= 0.10.19
+ unix:!mac:!symbian {
+ TMP_GST_LIBS = \
+ gstreamer-0.10 >= 0.10.19 \
+ gstreamer-base-0.10 >= 0.10.19 \
+ gstreamer-interfaces-0.10 >= 0.10.19 \
+ gstreamer-audio-0.10 >= 0.10.19 \
+ gstreamer-video-0.10 >= 0.10.19
- system(pkg-config --exists \'$${TMP_GST_LIBS}\' --print-errors): {
- SUBDIRS += gstreamer
+ system(pkg-config --exists \'$${TMP_GST_LIBS}\' --print-errors): {
+ SUBDIRS += gstreamer
+ }
}
}
diff --git a/src/plugins/mediaservices/qt7/mediaplayer/qt7playerservice.mm b/src/plugins/mediaservices/qt7/mediaplayer/qt7playerservice.mm
index df15fa8..faf75d1 100644
--- a/src/plugins/mediaservices/qt7/mediaplayer/qt7playerservice.mm
+++ b/src/plugins/mediaservices/qt7/mediaplayer/qt7playerservice.mm
@@ -79,7 +79,7 @@ QT7PlayerService::QT7PlayerService(QObject *parent):
#if defined(QT_MAC_USE_COCOA)
m_videoWidnowControl = new QT7MovieViewOutput(this);
m_videoOutputControl->enableOutput(QVideoOutputControl::WindowOutput);
- qDebug() << "Using cocoa";
+// qDebug() << "Using cocoa";
#endif
#ifdef QUICKTIME_C_API_AVAILABLE
@@ -88,11 +88,11 @@ QT7PlayerService::QT7PlayerService(QObject *parent):
m_videoWidgetControl = new QT7MovieVideoWidget(this);
m_videoOutputControl->enableOutput(QVideoOutputControl::WidgetOutput);
- qDebug() << "QuickTime C API is available";
+// qDebug() << "QuickTime C API is available";
#else
m_videoRendererControl = new QT7MovieViewRenderer(this);
m_videoOutputControl->enableOutput(QVideoOutputControl::RendererOutput);
- qDebug() << "QuickTime C API is not available";
+// qDebug() << "QuickTime C API is not available";
#endif
@@ -129,7 +129,7 @@ QMediaControl *QT7PlayerService::control(const char *name) const
void QT7PlayerService::updateVideoOutput()
{
- qDebug() << "QT7PlayerService::updateVideoOutput" << m_videoOutputControl->output();
+// qDebug() << "QT7PlayerService::updateVideoOutput" << m_videoOutputControl->output();
switch (m_videoOutputControl->output()) {
case QVideoOutputControl::WindowOutput:
diff --git a/src/plugins/mediaservices/qt7/mediaplayer/qt7playersession.mm b/src/plugins/mediaservices/qt7/mediaplayer/qt7playersession.mm
index d516a99..3f198b9 100644
--- a/src/plugins/mediaservices/qt7/mediaplayer/qt7playersession.mm
+++ b/src/plugins/mediaservices/qt7/mediaplayer/qt7playersession.mm
@@ -372,7 +372,7 @@ void QT7PlayerSession::setMedia(const QMediaContent &content, QIODevice *stream)
else
return;
- qDebug() << "Open media" << url;
+// qDebug() << "Open media" << url;
NSError *err = 0;
NSString *urlString = (NSString *)qString2CFStringRef(url.toString());
@@ -436,7 +436,7 @@ void QT7PlayerSession::processStateChange()
{
signed long state = [[(QTMovie*)m_QTMovie attributeForKey:QTMovieLoadStateAttribute]
longValue];
- qDebug() << "Moview load state changed:" << state;
+// qDebug() << "Moview load state changed:" << state;
#ifndef QUICKTIME_C_API_AVAILABLE
enum {
@@ -505,7 +505,7 @@ void QT7PlayerSession::processNaturalSizeChange()
{
if (m_videoOutput) {
NSSize size = [[(QTMovie*)m_QTMovie attributeForKey:@"QTMovieNaturalSizeAttribute"] sizeValue];
- qDebug() << "Native size changed:" << QSize(size.width, size.height);
+// qDebug() << "Native size changed:" << QSize(size.width, size.height);
m_videoOutput->updateNaturalSize(QSize(size.width, size.height));
}
}
diff --git a/src/plugins/mediaservices/qt7/qt7movierenderer.mm b/src/plugins/mediaservices/qt7/qt7movierenderer.mm
index 587f3b9..6b9fd21 100644
--- a/src/plugins/mediaservices/qt7/qt7movierenderer.mm
+++ b/src/plugins/mediaservices/qt7/qt7movierenderer.mm
@@ -169,7 +169,7 @@ QT7MovieRenderer::QT7MovieRenderer(QObject *parent)
#endif
m_surface(0)
{
- qDebug() << "QT7MovieRenderer";
+// qDebug() << "QT7MovieRenderer";
m_displayLink = new QCvDisplayLink(this);
connect(m_displayLink, SIGNAL(tick(CVTimeStamp)), SLOT(updateVideoFrame(CVTimeStamp)));
@@ -262,7 +262,7 @@ void QT7MovieRenderer::setupVideoOutput()
{
AutoReleasePool pool;
- qDebug() << "QT7MovieRenderer::setupVideoOutput" << m_movie;
+// qDebug() << "QT7MovieRenderer::setupVideoOutput" << m_movie;
if (m_movie == 0 || m_surface == 0) {
m_displayLink->stop();
@@ -286,9 +286,9 @@ void QT7MovieRenderer::setupVideoOutput()
if (m_surface->isActive())
m_surface->stop();
- qDebug() << "Starting the surface with format" << format;
+// qDebug() << "Starting the surface with format" << format;
if (!m_surface->start(format)) {
- qDebug() << "failed to start video surface" << m_surface->error();
+// qDebug() << "failed to start video surface" << m_surface->error();
glSupported = false;
} else {
m_usingGLContext = true;
@@ -301,14 +301,15 @@ void QT7MovieRenderer::setupVideoOutput()
QVideoSurfaceFormat format(m_nativeSize, QVideoFrame::Format_RGB32);
if (m_surface->isActive() && m_surface->surfaceFormat() != format) {
- qDebug() << "Surface format was changed, stop the surface.";
+// qDebug() << "Surface format was changed, stop the surface.";
m_surface->stop();
}
if (!m_surface->isActive()) {
- qDebug() << "Starting the surface with format" << format;
- if (!m_surface->start(format))
- qDebug() << "failed to start video surface" << m_surface->error();
+// qDebug() << "Starting the surface with format" << format;
+ m_surface->start(format);
+// if (!m_surface->start(format))
+// qDebug() << "failed to start video surface" << m_surface->error();
}
}
}
@@ -328,14 +329,14 @@ void QT7MovieRenderer::setupVideoOutput()
if (!m_nativeSize.isEmpty()) {
if (!m_visualContext) {
if (m_usingGLContext) {
- qDebug() << "Building OpenGL visual context" << m_nativeSize;
+// qDebug() << "Building OpenGL visual context" << m_nativeSize;
m_currentGLContext = QGLContext::currentContext();
if (!createGLVisualContext()) {
qWarning() << "QT7MovieRenderer: failed to create visual context";
return;
}
} else {
- qDebug() << "Building Pixel Buffer visual context" << m_nativeSize;
+// qDebug() << "Building Pixel Buffer visual context" << m_nativeSize;
if (!createPixelBufferVisualContext()) {
qWarning() << "QT7MovieRenderer: failed to create visual context";
return;
@@ -358,7 +359,7 @@ void QT7MovieRenderer::setEnabled(bool)
void QT7MovieRenderer::setMovie(void *movie)
{
- qDebug() << "QT7MovieRenderer::setMovie" << movie;
+// qDebug() << "QT7MovieRenderer::setMovie" << movie;
#ifdef QUICKTIME_C_API_AVAILABLE
QMutexLocker locker(&m_mutex);
@@ -393,7 +394,7 @@ QAbstractVideoSurface *QT7MovieRenderer::surface() const
void QT7MovieRenderer::setSurface(QAbstractVideoSurface *surface)
{
- qDebug() << "Set video surface" << surface;
+// qDebug() << "Set video surface" << surface;
if (surface == m_surface)
return;
diff --git a/src/plugins/mediaservices/qt7/qt7movievideowidget.mm b/src/plugins/mediaservices/qt7/qt7movievideowidget.mm
index 6e74fcd..4043330 100644
--- a/src/plugins/mediaservices/qt7/qt7movievideowidget.mm
+++ b/src/plugins/mediaservices/qt7/qt7movievideowidget.mm
@@ -184,7 +184,7 @@ QT7MovieVideoWidget::QT7MovieVideoWidget(QObject *parent)
m_hue(0),
m_saturation(0)
{
- qDebug() << "QT7MovieVideoWidget";
+// qDebug() << "QT7MovieVideoWidget";
QGLFormat format = QGLFormat::defaultFormat();
format.setSwapInterval(1); // Vertical sync (avoid tearing)
@@ -249,7 +249,7 @@ void QT7MovieVideoWidget::setupVideoOutput()
{
AutoReleasePool pool;
- qDebug() << "QT7MovieVideoWidget::setupVideoOutput" << m_movie;
+// qDebug() << "QT7MovieVideoWidget::setupVideoOutput" << m_movie;
if (m_movie == 0) {
m_displayLink->stop();
diff --git a/src/plugins/mediaservices/qt7/qt7movieviewrenderer.mm b/src/plugins/mediaservices/qt7/qt7movieviewrenderer.mm
index 7271f5b..5047853 100644
--- a/src/plugins/mediaservices/qt7/qt7movieviewrenderer.mm
+++ b/src/plugins/mediaservices/qt7/qt7movieviewrenderer.mm
@@ -247,7 +247,7 @@ void QT7MovieViewRenderer::setupVideoOutput()
{
AutoReleasePool pool;
- qDebug() << "QT7MovieViewRenderer::setupVideoOutput" << m_movie << m_surface;
+// qDebug() << "QT7MovieViewRenderer::setupVideoOutput" << m_movie << m_surface;
HiddenQTMovieView *movieView = (HiddenQTMovieView*)m_movieView;
@@ -274,14 +274,15 @@ void QT7MovieViewRenderer::setupVideoOutput()
QVideoSurfaceFormat format(m_nativeSize, QVideoFrame::Format_RGB32);
if (m_surface->isActive() && m_surface->surfaceFormat() != format) {
- qDebug() << "Surface format was changed, stop the surface.";
+// qDebug() << "Surface format was changed, stop the surface.";
m_surface->stop();
}
if (!m_surface->isActive()) {
- qDebug() << "Starting the surface with format" << format;
- if (!m_surface->start(format))
- qDebug() << "failed to start video surface" << m_surface->error();
+// qDebug() << "Starting the surface with format" << format;
+ m_surface->start(format);
+// if (!m_surface->start(format))
+// qDebug() << "failed to start video surface" << m_surface->error();
}
}
}
diff --git a/tests/auto/qmediacontent/qmediacontent.pro b/tests/auto/qmediacontent/qmediacontent.pro
index f7884f6..6c13c8b 100644
--- a/tests/auto/qmediacontent/qmediacontent.pro
+++ b/tests/auto/qmediacontent/qmediacontent.pro
@@ -2,5 +2,5 @@ load(qttest_p4)
SOURCES += tst_qmediacontent.cpp
-QT = core multimedia
+QT = core network multimedia
diff --git a/tests/auto/qmediacontent/tst_qmediacontent.cpp b/tests/auto/qmediacontent/tst_qmediacontent.cpp
index 35dd0a9..8987241 100644
--- a/tests/auto/qmediacontent/tst_qmediacontent.cpp
+++ b/tests/auto/qmediacontent/tst_qmediacontent.cpp
@@ -51,6 +51,7 @@ class tst_QMediaContent : public QObject
private slots:
void testNull();
void testUrlCtor();
+ void testRequestCtor();
void testResourceCtor();
void testResourceListCtor();
void testCopy();
@@ -77,6 +78,18 @@ void tst_QMediaContent::testUrlCtor()
QCOMPARE(media.canonicalResource().url(), QUrl("http://example.com/movie.mov"));
}
+void tst_QMediaContent::testRequestCtor()
+{
+ QNetworkRequest request(QUrl("http://example.com/movie.mov"));
+ request.setAttribute(QNetworkRequest::User, QVariant(1234));
+
+ QMediaContent media(request);
+
+ QCOMPARE(media.canonicalUrl(), QUrl("http://example.com/movie.mov"));
+ QCOMPARE(media.canonicalResource().request(), request);
+ QCOMPARE(media.canonicalResource().url(), QUrl("http://example.com/movie.mov"));
+}
+
void tst_QMediaContent::testResourceCtor()
{
QMediaContent media(QMediaResource(QUrl("http://example.com/movie.mov")));
diff --git a/tools/configure/configure.pro b/tools/configure/configure.pro
index 91de7c2..d926a76 100644
--- a/tools/configure/configure.pro
+++ b/tools/configure/configure.pro
@@ -119,3 +119,4 @@ DEFINES += COMMERCIAL_VERSION
INCLUDEPATH += $$QT_SOURCE_TREE/src/corelib/arch/generic \
$$QT_SOURCE_TREE/include/QtCore \
+ $$QT_SOURCE_TREE/tools/shared
diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp
index 1fe4503..0ff7301 100644
--- a/tools/configure/configureapp.cpp
+++ b/tools/configure/configureapp.cpp
@@ -248,6 +248,7 @@ Configure::Configure( int& argc, char** argv )
dictionary[ "PHONON_BACKEND" ] = "yes";
dictionary[ "MULTIMEDIA" ] = "yes";
dictionary[ "AUDIO_BACKEND" ] = "auto";
+ dictionary[ "MEDIASERVICE"] = "auto";
dictionary[ "DIRECTSHOW" ] = "no";
dictionary[ "WEBKIT" ] = "auto";
dictionary[ "DECLARATIVE" ] = "auto";
@@ -907,6 +908,10 @@ void Configure::parseCmdLine()
dictionary[ "AUDIO_BACKEND" ] = "yes";
} else if( configCmdLine.at(i) == "-no-audio-backend" ) {
dictionary[ "AUDIO_BACKEND" ] = "no";
+ } else if( configCmdLine.at(i) == "-mediaservice") {
+ dictionary[ "MEDIASERVICE" ] = "yes";
+ } else if (configCmdLine.at(i) == "-no-mediaservice") {
+ dictionary[ "MEDIASERVICE" ] = "no";
} else if( configCmdLine.at(i) == "-no-phonon" ) {
dictionary[ "PHONON" ] = "no";
} else if( configCmdLine.at(i) == "-phonon" ) {
@@ -1771,6 +1776,8 @@ bool Configure::displayHelp()
desc("MULTIMEDIA", "yes","-multimedia", "Compile in multimedia module");
desc("AUDIO_BACKEND", "no","-no-audio-backend", "Do not compile in the platform audio backend into QtMultimedia");
desc("AUDIO_BACKEND", "yes","-audio-backend", "Compile in the platform audio backend into QtMultimedia");
+ desc("MEDIASERVICE", "no","-no-mediaservice", "Do not compile in the platform-specific QtMultimedia media service.");
+ desc("MEDIASERVICE", "yes","-mediaservice", "Compile in the platform-specific QtMultimedia media service.");
desc("WEBKIT", "no", "-no-webkit", "Do not compile in the WebKit module");
desc("WEBKIT", "yes", "-webkit", "Compile in the WebKit module (WebKit is built if a decent C++ compiler is used.)");
desc("SCRIPT", "no", "-no-script", "Do not build the QtScript module.");
@@ -2052,7 +2059,7 @@ bool Configure::checkAvailability(const QString &part)
&& dictionary.value("QMAKESPEC") != "win32-msvc.net" // Leave for now, since we can't be sure if they are using 2002 or 2003 with this spec
&& dictionary.value("QMAKESPEC") != "win32-msvc2002"
&& dictionary.value("EXCEPTIONS") == "yes";
- } else if (part == "PHONON") {
+ } else if (part == "PHONON" || part == "MEDIASERVICE") {
available = findFile("vmr9.h") && findFile("dshow.h") && findFile("dmo.h") && findFile("dmodshow.h")
&& (findFile("strmiids.lib") || findFile("libstrmiids.a"))
&& (findFile("dmoguids.lib") || findFile("libdmoguids.a"))
@@ -2212,6 +2219,8 @@ void Configure::autoDetection()
dictionary["DECLARATIVE"] = checkAvailability("DECLARATIVE") ? "yes" : "no";
if (dictionary["AUDIO_BACKEND"] == "auto")
dictionary["AUDIO_BACKEND"] = checkAvailability("AUDIO_BACKEND") ? "yes" : "no";
+ if (dictionary["MEDIASERVICE"] == "auto")
+ dictionary["MEDIASERVICE"] = checkAvailability("MEDIASERVICE") ? "yes" : "no";
// Qt/WinCE remote test application
if (dictionary["CETEST"] == "auto")
@@ -2602,6 +2611,8 @@ void Configure::generateOutputVars()
qtConfig += "multimedia";
if (dictionary["AUDIO_BACKEND"] == "yes")
qtConfig += "audio-backend";
+ if (dictionary["MEDIASERVICE"] == "yes")
+ qtConfig += "mediaservice";
}
if (dictionary["WEBKIT"] == "yes")