diff options
Diffstat (limited to 'libmpdemux')
-rw-r--r-- | libmpdemux/demux_lavf.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/libmpdemux/demux_lavf.c b/libmpdemux/demux_lavf.c index 2b6fd05a5c..6de56c5e18 100644 --- a/libmpdemux/demux_lavf.c +++ b/libmpdemux/demux_lavf.c @@ -97,6 +97,7 @@ static int mp_read(void *opaque, uint8_t *buf, int size) { static offset_t mp_seek(void *opaque, offset_t pos, int whence) { stream_t *stream = opaque; + offset_t current_pos; mp_msg(MSGT_HEADER,MSGL_DBG2,"mp_seek(%p, %d, %d)\n", stream, (int)pos, whence); if(whence == SEEK_CUR) pos +=stream_tell(stream); @@ -113,8 +114,12 @@ static offset_t mp_seek(void *opaque, offset_t pos, int whence) { return -1; if(pos<stream->end_pos && stream->eof) stream_reset(stream); - if(stream_seek(stream, pos)==0) + current_pos = stream_tell(stream); + if(stream_seek(stream, pos)==0) { + stream_reset(stream); + stream_seek(stream, current_pos); return -1; + } return pos - stream->start_pos; } |