summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2021-02-12 14:03:09 +0100
committerLars Knoll <lars.knoll@qt.io>2021-02-17 08:28:23 +0000
commit219cc6f943f45b58846677745cdd6150dfaa2869 (patch)
treeee4822fe70a7bc9420dd975a2dba6c50b31fd7a0
parent334188b907db7082609dbe4c2a5f2fafd9171999 (diff)
Move the streams interface into QMediaPlayerControl
Change-Id: Ib3ce50ed15e96d4edc5d64c9b0f514f591d75c64 Reviewed-by: Doris Verria <doris.verria@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
-rw-r--r--src/multimedia/controls/qmediaplayercontrol.h4
-rw-r--r--src/multimedia/platform/gstreamer/common/qgstreamerplayercontrol.cpp8
-rw-r--r--src/multimedia/platform/gstreamer/common/qgstreamerplayercontrol_p.h6
-rw-r--r--src/multimedia/platform/gstreamer/mediaplayer/qgstreamerplayerservice.cpp6
-rw-r--r--src/multimedia/platform/gstreamer/mediaplayer/qgstreamerplayerservice_p.h3
-rw-r--r--tests/auto/unit/mockbackend/mockmediaplayercontrol.h12
-rw-r--r--tests/auto/unit/mockbackend/mockmediaplayerservice.h6
7 files changed, 29 insertions, 16 deletions
diff --git a/src/multimedia/controls/qmediaplayercontrol.h b/src/multimedia/controls/qmediaplayercontrol.h
index ac4404451..15a6e3e2d 100644
--- a/src/multimedia/controls/qmediaplayercontrol.h
+++ b/src/multimedia/controls/qmediaplayercontrol.h
@@ -49,6 +49,8 @@
QT_BEGIN_NAMESPACE
+class QMediaStreamsControl;
+
class Q_MULTIMEDIA_EXPORT QMediaPlayerControl : public QObject
{
Q_OBJECT
@@ -104,6 +106,8 @@ public:
virtual void setVideoSurface(QAbstractVideoSurface *surface) = 0;
+ virtual QMediaStreamsControl *mediaStreams() { return nullptr; }
+
Q_SIGNALS:
void audioRoleChanged(QAudio::Role role);
void customAudioRoleChanged(const QString &role);
diff --git a/src/multimedia/platform/gstreamer/common/qgstreamerplayercontrol.cpp b/src/multimedia/platform/gstreamer/common/qgstreamerplayercontrol.cpp
index f856bc3d8..e347d33a6 100644
--- a/src/multimedia/platform/gstreamer/common/qgstreamerplayercontrol.cpp
+++ b/src/multimedia/platform/gstreamer/common/qgstreamerplayercontrol.cpp
@@ -39,6 +39,7 @@
#include <private/qgstreamerplayercontrol_p.h>
#include <private/qgstreamerplayersession_p.h>
+#include <private/qgstreamerstreamscontrol_p.h>
#include <qaudiodeviceinfo.h>
#include <QtCore/qdir.h>
@@ -390,6 +391,13 @@ void QGstreamerPlayerControl::setVideoSurface(QAbstractVideoSurface *surface)
m_session->setVideoRenderer(surface);
}
+QMediaStreamsControl *QGstreamerPlayerControl::mediaStreams()
+{
+ if (!m_streamsControl)
+ m_streamsControl = new QGstreamerStreamsControl(m_session, this);
+ return m_streamsControl;
+}
+
bool QGstreamerPlayerControl::isAudioAvailable() const
{
return m_session->isAudioAvailable();
diff --git a/src/multimedia/platform/gstreamer/common/qgstreamerplayercontrol_p.h b/src/multimedia/platform/gstreamer/common/qgstreamerplayercontrol_p.h
index a73ea1b94..9e672f78a 100644
--- a/src/multimedia/platform/gstreamer/common/qgstreamerplayercontrol_p.h
+++ b/src/multimedia/platform/gstreamer/common/qgstreamerplayercontrol_p.h
@@ -59,6 +59,8 @@
QT_BEGIN_NAMESPACE
class QGstreamerPlayerSession;
+class QGstreamerStreamsControl;
+
class Q_MULTIMEDIA_EXPORT QGstreamerPlayerControl : public QMediaPlayerControl
{
Q_OBJECT
@@ -102,6 +104,8 @@ public:
void setVideoSurface(QAbstractVideoSurface *surface) override;
+ QMediaStreamsControl *mediaStreams() override;
+
public Q_SLOTS:
void setPosition(qint64 pos) override;
@@ -127,6 +131,8 @@ private:
void popAndNotifyState();
QGstreamerPlayerSession *m_session = nullptr;
+ QGstreamerStreamsControl *m_streamsControl = nullptr;
+
QMediaPlayer::State m_userRequestedState = QMediaPlayer::StoppedState;
QMediaPlayer::State m_currentState = QMediaPlayer::StoppedState;
QMediaPlayer::MediaStatus m_mediaStatus = QMediaPlayer::NoMedia;
diff --git a/src/multimedia/platform/gstreamer/mediaplayer/qgstreamerplayerservice.cpp b/src/multimedia/platform/gstreamer/mediaplayer/qgstreamerplayerservice.cpp
index 1cbe5675e..6909789a5 100644
--- a/src/multimedia/platform/gstreamer/mediaplayer/qgstreamerplayerservice.cpp
+++ b/src/multimedia/platform/gstreamer/mediaplayer/qgstreamerplayerservice.cpp
@@ -55,7 +55,6 @@ QGstreamerPlayerService::QGstreamerPlayerService()
{
m_session = new QGstreamerPlayerSession(this);
m_control = new QGstreamerPlayerControl(m_session, this);
- m_streamsControl = new QGstreamerStreamsControl(m_session,this);
}
QGstreamerPlayerService::~QGstreamerPlayerService()
@@ -72,9 +71,4 @@ QMediaPlayerControl *QGstreamerPlayerService::player()
return m_control;
}
-QMediaStreamsControl *QGstreamerPlayerService::streams()
-{
- return m_streamsControl;
-}
-
QT_END_NAMESPACE
diff --git a/src/multimedia/platform/gstreamer/mediaplayer/qgstreamerplayerservice_p.h b/src/multimedia/platform/gstreamer/mediaplayer/qgstreamerplayerservice_p.h
index 1c42775d2..074e1b527 100644
--- a/src/multimedia/platform/gstreamer/mediaplayer/qgstreamerplayerservice_p.h
+++ b/src/multimedia/platform/gstreamer/mediaplayer/qgstreamerplayerservice_p.h
@@ -62,7 +62,6 @@ class QMediaPlayerControl;
class QGstreamerMetaData;
class QGstreamerPlayerControl;
class QGstreamerPlayerSession;
-class QGstreamerStreamsControl;
class QGStreamerAvailabilityControl;
class QGstreamerPlayerService : public QMediaPlatformPlayerInterface
@@ -74,12 +73,10 @@ public:
// QMediaPlatformPlayerInterface
QMediaPlayerControl *player() override;
- QMediaStreamsControl *streams() override;
private:
QGstreamerPlayerControl *m_control = nullptr;
QGstreamerPlayerSession *m_session = nullptr;
- QGstreamerStreamsControl *m_streamsControl = nullptr;
};
QT_END_NAMESPACE
diff --git a/tests/auto/unit/mockbackend/mockmediaplayercontrol.h b/tests/auto/unit/mockbackend/mockmediaplayercontrol.h
index 12532f826..26075ba2e 100644
--- a/tests/auto/unit/mockbackend/mockmediaplayercontrol.h
+++ b/tests/auto/unit/mockbackend/mockmediaplayercontrol.h
@@ -30,6 +30,7 @@
#define MOCKMEDIAPLAYERCONTROL_H
#include "qmediaplayercontrol.h"
+#include "mockmediastreamscontrol.h"
#include <qurl.h>
class MockMediaPlayerControl : public QMediaPlayerControl
@@ -53,7 +54,13 @@ public:
, _playbackRate(qreal(1.0))
, _stream(0)
, _isValid(false)
- {}
+ {
+ mockStreamsControl = new MockStreamsControl;
+ }
+ ~MockMediaPlayerControl()
+ {
+ delete mockStreamsControl;
+ }
QMediaPlayer::State state() const { return _state; }
void updateState(QMediaPlayer::State state) { emit stateChanged(_state = state); }
@@ -146,12 +153,15 @@ public:
void setVideoSurface(QAbstractVideoSurface *) {}
+ QMediaStreamsControl *streams() { return mockStreamsControl; }
+
void emitError(QMediaPlayer::Error err, const QString &errorString)
{
emit error(err, errorString);
}
+ MockStreamsControl *mockStreamsControl;
bool hasAudioRole = true;
bool hasCustomAudioRole = true;
QAudio::Role m_audioRole = QAudio::UnknownRole;
diff --git a/tests/auto/unit/mockbackend/mockmediaplayerservice.h b/tests/auto/unit/mockbackend/mockmediaplayerservice.h
index a7778d55a..d6a37c958 100644
--- a/tests/auto/unit/mockbackend/mockmediaplayerservice.h
+++ b/tests/auto/unit/mockbackend/mockmediaplayerservice.h
@@ -32,7 +32,6 @@
#include "private/qmediaplatformplayerinterface_p.h"
#include "mockmediaplayercontrol.h"
-#include "mockmediastreamscontrol.h"
class MockMediaPlayerService : public QMediaPlatformPlayerInterface
{
@@ -42,19 +41,15 @@ public:
MockMediaPlayerService()
{
mockControl = new MockMediaPlayerControl;
- mockStreamsControl = new MockStreamsControl;
}
~MockMediaPlayerService()
{
delete mockControl;
- delete mockStreamsControl;
}
MockMediaPlayerControl *player() { return mockControl; }
- QMediaStreamsControl *streams() { return mockStreamsControl; } // ###
-
void setState(QMediaPlayer::State state) { emit mockControl->stateChanged(mockControl->_state = state); }
void setState(QMediaPlayer::State state, QMediaPlayer::MediaStatus status) {
mockControl->_state = state;
@@ -98,7 +93,6 @@ public:
}
MockMediaPlayerControl *mockControl;
- MockStreamsControl *mockStreamsControl;
};