diff options
author | Lars Knoll <lars.knoll@qt.io> | 2021-02-12 14:03:09 +0100 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2021-02-17 08:28:23 +0000 |
commit | 219cc6f943f45b58846677745cdd6150dfaa2869 (patch) | |
tree | ee4822fe70a7bc9420dd975a2dba6c50b31fd7a0 | |
parent | 334188b907db7082609dbe4c2a5f2fafd9171999 (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>
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; }; |