From 9f9bbb3c8b0cce1d148f3f6046ec8deb636577ff Mon Sep 17 00:00:00 2001 From: Uoti Urpala Date: Sun, 26 Feb 2012 05:53:13 +0200 Subject: 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. --- libmpdemux/demux_lavf.c | 7 +++++-- 1 file 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) -- cgit v1.2.3