diff options
Diffstat (limited to 'player/playloop.c')
-rw-r--r-- | player/playloop.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/player/playloop.c b/player/playloop.c index dea78c5571..964f112b6d 100644 --- a/player/playloop.c +++ b/player/playloop.c @@ -472,11 +472,12 @@ double get_current_pos_ratio(struct MPContext *mpctx, bool use_range) ans = MPCLAMP((pos - start) / len, 0, 1); } else { struct stream *s = demuxer->stream; - int64_t size = s->end_pos; - int64_t fpos = demuxer->filepos >= 0 ? - demuxer->filepos : stream_tell(demuxer->stream); - if (size > 0) + int64_t size; + if (stream_control(s, STREAM_CTRL_GET_SIZE, &size) > 0 && size > 0) { + int64_t fpos = + demuxer->filepos >= 0 ? demuxer->filepos : stream_tell(s); ans = MPCLAMP(fpos / (double)size, 0, 1); + } } if (use_range) { if (mpctx->opts->play_frames > 0) |