summaryrefslogtreecommitdiffstats
path: root/src/gsttools
diff options
context:
space:
mode:
Diffstat (limited to 'src/gsttools')
-rw-r--r--src/gsttools/qgstreamerplayercontrol.cpp7
-rw-r--r--src/gsttools/qgstreamerplayersession.cpp8
2 files changed, 10 insertions, 5 deletions
diff --git a/src/gsttools/qgstreamerplayercontrol.cpp b/src/gsttools/qgstreamerplayercontrol.cpp
index 91ba39ad9..053e5e408 100644
--- a/src/gsttools/qgstreamerplayercontrol.cpp
+++ b/src/gsttools/qgstreamerplayercontrol.cpp
@@ -308,7 +308,12 @@ void QGstreamerPlayerControl::stop()
if (m_currentState != QMediaPlayer::StoppedState) {
m_currentState = QMediaPlayer::StoppedState;
m_session->showPrerollFrames(false); // stop showing prerolled frames in stop state
- if (m_resources->isGranted())
+ // Since gst is not going to send GST_STATE_PAUSED
+ // when pipeline is already paused,
+ // needs to update media status directly.
+ if (m_session->state() == QMediaPlayer::PausedState)
+ updateMediaStatus();
+ else if (m_resources->isGranted())
m_session->pause();
if (m_mediaStatus != QMediaPlayer::EndOfMedia) {
diff --git a/src/gsttools/qgstreamerplayersession.cpp b/src/gsttools/qgstreamerplayersession.cpp
index adf27e4a0..485556275 100644
--- a/src/gsttools/qgstreamerplayersession.cpp
+++ b/src/gsttools/qgstreamerplayersession.cpp
@@ -137,7 +137,7 @@ QGstreamerPlayerSession::QGstreamerPlayerSession(QObject *parent)
m_videoAvailable(false),
m_seekable(false),
m_lastPosition(0),
- m_duration(-1),
+ m_duration(0),
m_durationQueries(0),
m_displayPrerolledFrame(true),
m_sourceType(UnknownSrc),
@@ -325,7 +325,7 @@ void QGstreamerPlayerSession::loadFromStream(const QNetworkRequest &request, QIO
qDebug() << Q_FUNC_INFO;
#endif
m_request = request;
- m_duration = -1;
+ m_duration = 0;
m_lastPosition = 0;
if (!m_appSrc)
@@ -354,7 +354,7 @@ void QGstreamerPlayerSession::loadFromUri(const QNetworkRequest &request)
qDebug() << Q_FUNC_INFO << request.url();
#endif
m_request = request;
- m_duration = -1;
+ m_duration = 0;
m_lastPosition = 0;
#if QT_CONFIG(gstreamer_app)
@@ -1500,7 +1500,7 @@ void QGstreamerPlayerSession::updateVideoResolutionTag()
void QGstreamerPlayerSession::updateDuration()
{
gint64 gstDuration = 0;
- int duration = -1;
+ int duration = 0;
if (m_pipeline && qt_gst_element_query_duration(m_pipeline, GST_FORMAT_TIME, &gstDuration))
duration = gstDuration / 1000000;