summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2015-04-28 22:03:18 +0200
committerDiogo Franco (Kovensky) <diogomfranco@gmail.com>2015-04-29 18:39:33 +0900
commit0126999cde0f7c4c990dfe6503126148eae9a78f (patch)
tree0d0d6b693f6cd09792dd9bf8c65da1c2cd927b5c
parent2a6b10c9cac1f70a6dfa2d51f898f7c58f240282 (diff)
downloadmpv-0126999cde0f7c4c990dfe6503126148eae9a78f.tar.bz2
mpv-0126999cde0f7c4c990dfe6503126148eae9a78f.tar.xz
player: clamp display time to known time range on seeking
During seeking, and there is momemtarily no new data available yet, the player will display the seek target as current time. Clamp this time to the known time range as implied by the start time and the duration of the file. This improves behavior especially when seeking in audio files, for which this for some reason triggers rather often. There were some users complaining about this. This makes behavior worse for files with timestamp resets, or incorrectly reported duration. (The latter is relatively common, e.g. libavformat shortcomings, or incomplete files.) (cherry picked from commit 0ff93a83571ede54af87ebd1aed5736f428c48d4)
-rw-r--r--player/playloop.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/player/playloop.c b/player/playloop.c
index c34ae7e6da..0c0de44997 100644
--- a/player/playloop.c
+++ b/player/playloop.c
@@ -382,6 +382,13 @@ double get_playback_time(struct MPContext *mpctx)
{
double cur = get_current_time(mpctx);
double start = get_start_time(mpctx);
+ // During seeking, the time corresponds to the last seek time - apply some
+ // cosmetics to it.
+ if (mpctx->playback_pts == MP_NOPTS_VALUE) {
+ double length = get_time_length(mpctx);
+ if (length >= 0)
+ cur = MPCLAMP(cur, start, start + length);
+ }
return cur >= start ? cur - start : cur;
}