From 1a522f2976004b8896d71e71446ae04723df3cec 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 fc55b9bf05..cabdb4e441 100644 --- a/player/playloop.c +++ b/player/playloop.c @@ -405,9 +405,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)