From e3c80d3a63765d53704dfd137b7e67b01eb13c00 Mon Sep 17 00:00:00 2001 From: Peter <> Date: Sun, 28 Jul 2019 00:40:53 +0100 Subject: [PATCH] Fix short video playback & scroll-to-end --- .../MediaPlayer/Sources/FFMpegMediaFrameSourceContext.swift | 6 ++++++ submodules/MediaPlayer/Sources/MediaPlayer.swift | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/submodules/MediaPlayer/Sources/FFMpegMediaFrameSourceContext.swift b/submodules/MediaPlayer/Sources/FFMpegMediaFrameSourceContext.swift index 5d6bd9bf39..b12b445457 100644 --- a/submodules/MediaPlayer/Sources/FFMpegMediaFrameSourceContext.swift +++ b/submodules/MediaPlayer/Sources/FFMpegMediaFrameSourceContext.swift @@ -622,6 +622,12 @@ final class FFMpegMediaFrameSourceContext: NSObject { } if let closestFrame = closestFrame { actualPts = closestFrame.pts + } else { + if let videoStream = initializedState.videoStream { + actualPts = videoStream.duration + } else { + actualPts = extraVideoFrames.last!.pts + } } } if let audioStream = initializedState.audioStream { diff --git a/submodules/MediaPlayer/Sources/MediaPlayer.swift b/submodules/MediaPlayer/Sources/MediaPlayer.swift index 7aaf423231..1c4075e03e 100644 --- a/submodules/MediaPlayer/Sources/MediaPlayer.swift +++ b/submodules/MediaPlayer/Sources/MediaPlayer.swift @@ -784,7 +784,7 @@ private final class MediaPlayerContext { } } else if let worstStatus = worstStatus, case let .finished(finishedAt) = worstStatus, finishedAt.isFinite { let nextTickDelay = max(0.0, finishedAt - timestamp) / self.baseRate - if nextTickDelay.isLessThanOrEqualTo(0.0) || timestamp.isEqual(to: 0.0) { + if nextTickDelay.isLessThanOrEqualTo(0.0) { rate = 0.0 performActionAtEndNow = true } else {