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.
This commit is contained in:
wm4 2015-01-14 22:14:20 +01:00
parent 3cb2add636
commit 1a522f2976
1 changed files with 2 additions and 2 deletions

View File

@ -405,9 +405,9 @@ double get_current_pos_ratio(struct MPContext *mpctx, bool use_range)
len = endpos - startpos; len = endpos - startpos;
} }
double pos = get_current_time(mpctx); double pos = get_current_time(mpctx);
if (len > 0 && !demuxer->ts_resets_possible) { if (len > 0)
ans = MPCLAMP((pos - start) / len, 0, 1); ans = MPCLAMP((pos - start) / len, 0, 1);
} else { if (ans < 0 || demuxer->ts_resets_possible) {
int64_t size; int64_t size;
if (demux_stream_control(demuxer, STREAM_CTRL_GET_SIZE, &size) > 0) { if (demux_stream_control(demuxer, STREAM_CTRL_GET_SIZE, &size) > 0) {
if (size > 0 && demuxer->filepos >= 0) if (size > 0 && demuxer->filepos >= 0)