summaryrefslogtreecommitdiffstats
path: root/src/plugins/avfoundation
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2019-10-15 03:04:31 +0200
committerVaL Doroshchuk <valentyn.doroshchuk@qt.io>2019-10-15 07:00:43 +0000
commit0a7482b97a9247f728730c1a2cf222f8a24a88c4 (patch)
treeedf415542a36413342c10e700471ced6268d62c7 /src/plugins/avfoundation
parent8277070128197744c0073c867dc78caea912bfce (diff)
parent56d430962a50af234902cd799920a5b6df6d80eb (diff)
Merge remote-tracking branch 'origin/5.13' into 5.14
Conflicts: src/multimedia/video/qvideoframe.cpp src/plugins/directshow/player/directshowplayercontrol.cpp Change-Id: I00840245e35861cf4fe1d62789815ca125b2052a
Diffstat (limited to 'src/plugins/avfoundation')
-rw-r--r--src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm b/src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm
index 3b3f47a43..3c59419e7 100644
--- a/src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm
+++ b/src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm
@@ -922,6 +922,19 @@ void AVFMediaPlayerSession::processBufferStateChange(int bufferStatus)
if (bufferStatus == m_bufferStatus)
return;
+ auto status = m_mediaStatus;
+ // Buffered -> unbuffered.
+ if (!bufferStatus) {
+ status = QMediaPlayer::StalledMedia;
+ } else if (status == QMediaPlayer::StalledMedia) {
+ status = QMediaPlayer::BufferedMedia;
+ // Resume playback.
+ [[static_cast<AVFMediaPlayerSessionObserver*>(m_observer) player] setRate:m_rate];
+ }
+
+ if (m_mediaStatus != status)
+ Q_EMIT mediaStatusChanged(m_mediaStatus = status);
+
m_bufferStatus = bufferStatus;
Q_EMIT bufferStatusChanged(bufferStatus);
}