summaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorDoris Verria <doris.verria@qt.io>2021-12-05 01:11:19 +0100
committerDoris Verria <doris.verria@qt.io>2021-12-10 10:49:01 +0100
commit8ac4ea8582eed62332e3861240415c7d4fa6b140 (patch)
treeb65904ef50f24a566d9e5dba73dd7d2d7c9417da /src/plugins
parentd9cdfeebd9eb6a067b97316daa149c7f58e1c7ec (diff)
Remove the AVPlayerItemVideoOutput from player item when changing media
When updating the player item of the AVPlayer, make sure to remove the video output (AVPlayerItemVideoOutput) from it. It will be added again to the updated player item on the next call to copyPixelBufferFromLayer. This fixes issues where the last frame of the previous video source was sometimes flashed before rendering the new one. Fixes: QTBUG-87000 Change-Id: Iec66f0e27efe621d1992a2a0f9f5060aa51f7076 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm b/src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm
index ae2234764..9928c665b 100644
--- a/src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm
+++ b/src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm
@@ -168,6 +168,10 @@ static void *AVFMediaPlayerSessionObserverCurrentItemDurationObservationContext
[[NSNotificationCenter defaultCenter] removeObserver:self
name:AVPlayerItemTimeJumpedNotification
object:m_playerItem];
+ for (AVPlayerItemOutput *output in m_playerItem.outputs) {
+ if ([output isKindOfClass:[AVPlayerItemVideoOutput class]])
+ [m_playerItem removeOutput:output];
+ }
m_playerItem = 0;
}
if (m_player) {