mirror of https://github.com/mpv-player/mpv
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:
parent
3cb2add636
commit
1a522f2976
|
@ -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)
|
||||||
|
|
Loading…
Reference in New Issue