diff options
author | Uoti Urpala <uau@mplayer2.org> | 2012-02-26 05:53:13 +0200 |
---|---|---|
committer | Uoti Urpala <uau@mplayer2.org> | 2012-02-26 05:53:13 +0200 |
commit | 9f9bbb3c8b0cce1d148f3f6046ec8deb636577ff (patch) | |
tree | 58f5fa2bfeda1b5131360badbe82073e88e6c131 /libmpdemux/demux_lavf.c | |
parent | d0bae74702bf74a38ec36abd267efa0b070fc943 (diff) | |
download | mpv-9f9bbb3c8b0cce1d148f3f6046ec8deb636577ff.tar.bz2 mpv-9f9bbb3c8b0cce1d148f3f6046ec8deb636577ff.tar.xz |
demux_lavf: update growing file size info for AVSEEK_SIZE
demux_lavf was returning a static size value when libavformat queried
file size with AVSEEK_SIZE. Add code to query the stream for possibly
changed value first. This at least improves seeking with growing MPEG
files; before seeks would never go beyond the part of the file that
existed when the stream was first opened.
Diffstat (limited to 'libmpdemux/demux_lavf.c')
-rw-r--r-- | libmpdemux/demux_lavf.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/libmpdemux/demux_lavf.c b/libmpdemux/demux_lavf.c index 02eff0d4b8..5fb66adb9d 100644 --- a/libmpdemux/demux_lavf.c +++ b/libmpdemux/demux_lavf.c @@ -109,9 +109,12 @@ static int64_t mp_seek(void *opaque, int64_t pos, int whence) pos += stream->end_pos; else if (whence == SEEK_SET) pos += stream->start_pos; - else if (whence == AVSEEK_SIZE && stream->end_pos > 0) + else if (whence == AVSEEK_SIZE && stream->end_pos > 0) { + off_t size; + if (stream_control(stream, STREAM_CTRL_GET_SIZE, &size) == STREAM_OK) + return size; return stream->end_pos - stream->start_pos; - else + } else return -1; if (pos < 0) |