From fea4d302cddbb91e23864a4dbd786d53b72f67ea Mon Sep 17 00:00:00 2001 From: VaL Doroshchuk Date: Thu, 7 Feb 2019 13:27:36 +0100 Subject: Gstreamer: Set surface from renderer before creating pipeline When multiple pipelines are created, and one of these gets recreated, it picks up the last set surface. This is incorrect, as it needs a surface belonging to the current renderer. This patch sets the surface before creating pipelines, retrieving it from the current renderer. Task-number: QTBUG-73557 Change-Id: I0811f7262a0eca57e01361a55515351127520064 Reviewed-by: Oliver Wolff Reviewed-by: Andy Shaw --- src/gsttools/qgstreamerplayersession.cpp | 8 +++++++- src/gsttools/qgstreamervideorenderer.cpp | 1 - 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/gsttools/qgstreamerplayersession.cpp b/src/gsttools/qgstreamerplayersession.cpp index bd402fb3c..f21c94c5c 100644 --- a/src/gsttools/qgstreamerplayersession.cpp +++ b/src/gsttools/qgstreamerplayersession.cpp @@ -47,7 +47,7 @@ #include #endif #include -#include +#include #include #include @@ -60,6 +60,7 @@ #include #include #include +#include //#define DEBUG_PLAYBIN //#define DEBUG_VO_BIN_DUMP @@ -338,6 +339,11 @@ void QGstreamerPlayerSession::loadFromUri(const QNetworkRequest &request) #endif if (m_request.url().scheme() == QLatin1String("gst-pipeline")) { + // Set current surface to video sink before creating a pipeline. + auto renderer = qobject_cast(m_videoOutput); + if (renderer) + QVideoSurfaceGstSink::setSurface(renderer->surface()); + QString url = m_request.url().toString(QUrl::RemoveScheme); QString pipeline = QUrl::fromPercentEncoding(url.toLatin1().constData()); GError *err = nullptr; diff --git a/src/gsttools/qgstreamervideorenderer.cpp b/src/gsttools/qgstreamervideorenderer.cpp index 25fc33cb3..c2226d658 100644 --- a/src/gsttools/qgstreamervideorenderer.cpp +++ b/src/gsttools/qgstreamervideorenderer.cpp @@ -113,7 +113,6 @@ void QGstreamerVideoRenderer::setSurface(QAbstractVideoSurface *surface) if (m_surface) { connect(m_surface.data(), SIGNAL(supportedFormatsChanged()), this, SLOT(handleFormatChange())); - QVideoSurfaceGstSink::setSurface(m_surface); } if (wasReady != isReady()) -- cgit v1.2.3 From eecd98d19211383ef197ecedc28ba57dee316944 Mon Sep 17 00:00:00 2001 From: VaL Doroshchuk Date: Mon, 25 Feb 2019 15:50:21 +0100 Subject: Add a revision of QML VideoOutput flushMode property to 5.13 Change-Id: Ie7982232af45fd09a46854c96d7c7d6672857a97 Reviewed-by: Kai Koehne --- src/imports/multimedia/multimedia.cpp | 3 +++ .../qtmultimediaquicktools_headers/qdeclarativevideooutput_p.h | 2 +- src/qtmultimediaquicktools/qdeclarativevideooutput.cpp | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/imports/multimedia/multimedia.cpp b/src/imports/multimedia/multimedia.cpp index f9170f790..8aed83d33 100644 --- a/src/imports/multimedia/multimedia.cpp +++ b/src/imports/multimedia/multimedia.cpp @@ -157,6 +157,9 @@ public: qmlRegisterType(); qmlRegisterType(); + // 5.13 types + qmlRegisterType(uri, 5, 13, "VideoOutput"); + // Auto-increment the import to stay in sync with ALL future QtQuick minor versions from 5.11 onward qmlRegisterModule(uri, 5, QT_VERSION_MINOR); } diff --git a/src/multimedia/qtmultimediaquicktools_headers/qdeclarativevideooutput_p.h b/src/multimedia/qtmultimediaquicktools_headers/qdeclarativevideooutput_p.h index 894796dfb..8ea0dc338 100644 --- a/src/multimedia/qtmultimediaquicktools_headers/qdeclarativevideooutput_p.h +++ b/src/multimedia/qtmultimediaquicktools_headers/qdeclarativevideooutput_p.h @@ -79,7 +79,7 @@ class Q_MULTIMEDIAQUICK_EXPORT QDeclarativeVideoOutput : public QQuickItem Q_PROPERTY(QRectF sourceRect READ sourceRect NOTIFY sourceRectChanged) Q_PROPERTY(QRectF contentRect READ contentRect NOTIFY contentRectChanged) Q_PROPERTY(QQmlListProperty filters READ filters); - Q_PROPERTY(FlushMode flushMode READ flushMode WRITE setFlushMode NOTIFY flushModeChanged) + Q_PROPERTY(FlushMode flushMode READ flushMode WRITE setFlushMode NOTIFY flushModeChanged REVISION 13) Q_ENUMS(FlushMode) Q_ENUMS(FillMode) diff --git a/src/qtmultimediaquicktools/qdeclarativevideooutput.cpp b/src/qtmultimediaquicktools/qdeclarativevideooutput.cpp index fccab54ab..b6d3afaa4 100644 --- a/src/qtmultimediaquicktools/qdeclarativevideooutput.cpp +++ b/src/qtmultimediaquicktools/qdeclarativevideooutput.cpp @@ -880,6 +880,7 @@ void QDeclarativeVideoOutput::_q_invalidateSceneGraph() /*! \qmlproperty enumeration QtMultimedia::VideoOutput::flushMode + \since QtMultimedia 5.13 Set this property to define what \c VideoOutput should show when playback is finished or stopped. -- cgit v1.2.3 From d247ababe8f248dcfac4da63970e6bc2192bc0e4 Mon Sep 17 00:00:00 2001 From: VaL Doroshchuk Date: Mon, 25 Feb 2019 14:24:29 +0100 Subject: QML: Make QtAudioEngine import available under 1.QT_MINOR_VERSION Made the QtAudioEngine import always available under the latest Qt minor version import QtAudioEngine 1.13 for 5.13 Task-number: QTBUG-74031 Change-Id: I14f602a5c59a6a6906aeeda8644e64dae36312e3 Reviewed-by: Kai Koehne --- src/imports/audioengine/audioengine.cpp | 2 ++ src/imports/audioengine/audioengine.pro | 2 +- src/imports/audioengine/qdeclarative_audioengine_p.cpp | 4 ++-- src/multimedia/doc/src/multimedia.qdoc | 6 +++--- src/multimedia/doc/src/qtaudioengine.qdoc | 8 ++++---- 5 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/imports/audioengine/audioengine.cpp b/src/imports/audioengine/audioengine.cpp index 1d3379b91..537b09ab8 100644 --- a/src/imports/audioengine/audioengine.cpp +++ b/src/imports/audioengine/audioengine.cpp @@ -79,6 +79,8 @@ public: // Dynamically adding audio engine related objects is only supported through revision 1 qmlRegisterType(uri, 1, 1, "AudioEngine"); qmlRegisterType(uri, 1, 1, "Sound"); + + qmlRegisterModule(uri, 1, QT_VERSION_MINOR); } }; diff --git a/src/imports/audioengine/audioengine.pro b/src/imports/audioengine/audioengine.pro index 1d46dfa33..f8d314282 100644 --- a/src/imports/audioengine/audioengine.pro +++ b/src/imports/audioengine/audioengine.pro @@ -1,7 +1,7 @@ CXX_MODULE = multimedia TARGET = declarative_audioengine TARGETPATH = QtAudioEngine -IMPORT_VERSION = 1.1 +IMPORT_VERSION = 1.$$QT_MINOR_VERSION QT += quick qml multimedia-private diff --git a/src/imports/audioengine/qdeclarative_audioengine_p.cpp b/src/imports/audioengine/qdeclarative_audioengine_p.cpp index bd309457e..24d878dd8 100644 --- a/src/imports/audioengine/qdeclarative_audioengine_p.cpp +++ b/src/imports/audioengine/qdeclarative_audioengine_p.cpp @@ -267,8 +267,8 @@ void QDeclarativeAudioEngine::initSound(QDeclarativeSound *sound) Adds the given \a sample to the engine. This can be used when the AudioSample is created dynamically: - \qml - import QtAudioEngine 1.1 + \qml \QtMinorVersion + import QtAudioEngine 1.\1 AudioEngine { id: engine diff --git a/src/multimedia/doc/src/multimedia.qdoc b/src/multimedia/doc/src/multimedia.qdoc index 68e8ba31c..ad8273612 100644 --- a/src/multimedia/doc/src/multimedia.qdoc +++ b/src/multimedia/doc/src/multimedia.qdoc @@ -181,9 +181,9 @@ import QtMultimedia 5.8 \endcode \annotatedlist multimedia_qml The following types are accessed by using \l{Qt Audio Engine QML Types}{Qt Audio Engine}: -\code -import QtAudioEngine 1.1 -\endcode +\qml \QtMinorVersion +import QtAudioEngine 1.\1 +\endqml \annotatedlist multimedia_audioengine \section2 Multimedia Classes diff --git a/src/multimedia/doc/src/qtaudioengine.qdoc b/src/multimedia/doc/src/qtaudioengine.qdoc index bb12489de..bf8be899e 100644 --- a/src/multimedia/doc/src/qtaudioengine.qdoc +++ b/src/multimedia/doc/src/qtaudioengine.qdoc @@ -26,7 +26,7 @@ ****************************************************************************/ /*! -\qmlmodule QtAudioEngine 1.1 +\qmlmodule QtAudioEngine 1.\QtMinorVersion \title Qt Audio Engine QML Types \ingroup qmlmodules \brief Provides QML types for 3D positional audio playback and content management. @@ -36,9 +36,9 @@ Engine provides types for 3D positional audio playback and content management. The QML types can be imported into your application using the following import statement in your .qml file: -\code -import QtAudioEngine 1.1 -\endcode +\qml \QtMinorVersion +import QtAudioEngine 1.\1 +\endqml \section1 Qt Audio Engine Features -- cgit v1.2.3 From 7ca4b60ab4e368f7800f5a9687c9fa58fc0bc574 Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Sun, 24 Feb 2019 11:03:31 +0100 Subject: Update plugins.qmltypes for Qt 5.13 Task-number: QTBUG-73739 Change-Id: Ib9489bd9af646bcbf296d88dd3bc9664dc2bd284 Reviewed-by: Kai Koehne Reviewed-by: VaL Doroshchuk --- src/imports/multimedia/plugins.qmltypes | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/imports/multimedia/plugins.qmltypes b/src/imports/multimedia/plugins.qmltypes index 78d9cd373..4b5298b6a 100644 --- a/src/imports/multimedia/plugins.qmltypes +++ b/src/imports/multimedia/plugins.qmltypes @@ -4,7 +4,7 @@ import QtQuick.tooling 1.2 // It is used for QML tooling purposes only. // // This file was auto-generated by: -// 'qmlplugindump -nonrelocatable QtMultimedia 5.12' +// 'qmlplugindump -nonrelocatable QtMultimedia 5.13' Module { dependencies: ["QtQuick 2.0"] @@ -1750,9 +1750,18 @@ Module { prototype: "QQuickItem" exports: [ "QtMultimedia/VideoOutput 5.0", + "QtMultimedia/VideoOutput 5.13", "QtMultimedia/VideoOutput 5.2" ] - exportMetaObjectRevisions: [0, 2] + exportMetaObjectRevisions: [0, 13, 2] + Enum { + name: "FlushMode" + values: { + "EmptyFrame": 0, + "FirstFrame": 1, + "LastFrame": 2 + } + } Enum { name: "FillMode" values: { @@ -1768,6 +1777,7 @@ Module { Property { name: "sourceRect"; type: "QRectF"; isReadonly: true } Property { name: "contentRect"; type: "QRectF"; isReadonly: true } Property { name: "filters"; type: "QAbstractVideoFilter"; isList: true; isReadonly: true } + Property { name: "flushMode"; revision: 13; type: "FlushMode" } Signal { name: "fillModeChanged" Parameter { type: "QDeclarativeVideoOutput::FillMode" } -- cgit v1.2.3