From 371b52e377b74dd16a40f6a418ef72355f303e72 Mon Sep 17 00:00:00 2001 From: wm4 Date: Wed, 14 Jan 2015 22:14:20 +0100 Subject: [PATCH] player: fallback to seek time for percent-pos property The percent-pos property normally goes by time, except for file formats like .ts or .ogg, where you can't trust the timestamps and duration info to compute the position in the overall files. These use the byte position and size instead. When the file position was unavailable (e.g. due to an ongoing seek), the percent-pos was unknown. Change it to use the time position instead. In most cases, it's actually accurate enough, and the temporary unavailability of the property can be annoying, e.g. on the terminal status line. --- player/playloop.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/player/playloop.c b/player/playloop.c index 13498502b6..649ccdb7ce 100644 --- a/player/playloop.c +++ b/player/playloop.c @@ -407,9 +407,9 @@ double get_current_pos_ratio(struct MPContext *mpctx, bool use_range) len = endpos - startpos; } double pos = get_current_time(mpctx); - if (len > 0 && !demuxer->ts_resets_possible) { + if (len > 0) ans = MPCLAMP((pos - start) / len, 0, 1); - } else { + if (ans < 0 || demuxer->ts_resets_possible) { int64_t size; if (demux_stream_control(demuxer, STREAM_CTRL_GET_SIZE, &size) > 0) { if (size > 0 && demuxer->filepos >= 0)