diff options
author | Roman Valov <roman.valov@gmail.com> | 2020-04-13 12:54:09 +0000 |
---|---|---|
committer | VaL Doroshchuk <valentyn.doroshchuk@qt.io> | 2020-04-20 16:33:46 +0000 |
commit | d8d072417b08dd75734b3f0aa86c3a49db934770 (patch) | |
tree | a53c29d9b0843506bf7210216261a5defbbce206 /src | |
parent | b8525df9434d34f24c488848e320d1bc77de49cd (diff) |
Gstreamer: fix stream buffering
Gstreamer client should handle GST_MESSAGE_BUFFERING to play and pause
streams based on buffer-percent value and Qt does it properly.
However `updateSessionState` of QGstreamerPlayerControl was implemented
to go back into playing state each time session state becomes paused.
That behavior resulted into choppy stream playback.
Fix with condition to un-pause playback only if it's already buffered.
Fixes: QTBUG-83417
Change-Id: Ida4a9e2e196de00050bdc64725fa818c7e939785
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/gsttools/qgstreamerplayercontrol.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/gsttools/qgstreamerplayercontrol.cpp b/src/gsttools/qgstreamerplayercontrol.cpp index 165978288..d65102e2f 100644 --- a/src/gsttools/qgstreamerplayercontrol.cpp +++ b/src/gsttools/qgstreamerplayercontrol.cpp @@ -439,8 +439,10 @@ void QGstreamerPlayerControl::updateSessionState(QMediaPlayer::State state) } m_pendingSeekPosition = -1; - if (m_currentState == QMediaPlayer::PlayingState) - m_session->play(); + if (m_currentState == QMediaPlayer::PlayingState) { + if (m_mediaStatus == QMediaPlayer::BufferedMedia) + m_session->play(); + } } updateMediaStatus(); |