summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2015-01-14 22:14:20 +0100
committerDiogo Franco (Kovensky) <diogomfranco@gmail.com>2015-01-25 17:00:19 +0900
commit371b52e377b74dd16a40f6a418ef72355f303e72 (patch)
tree31187fc1a3ce3f42061625d37ff3537c42b7f2c3
parentd8152b7003258fa2017b93cb855285f65c97ac1b (diff)
downloadmpv-371b52e377b74dd16a40f6a418ef72355f303e72.tar.bz2
mpv-371b52e377b74dd16a40f6a418ef72355f303e72.tar.xz
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.
-rw-r--r--player/playloop.c4
1 files 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)