summaryrefslogtreecommitdiffstats
path: root/demux/demux_lavf.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2014-09-29 17:49:26 +0200
committerwm4 <wm4@nowhere>2014-09-29 18:06:44 +0200
commit39451732e905e5884a04e040a9d47d8f4a47025c (patch)
tree4b74e8bf1d23dd3fb3f941e81b9634800c83bef7 /demux/demux_lavf.c
parent0fee6537bb4a65ff68864a8ae965a9f81b6d474b (diff)
downloadmpv-39451732e905e5884a04e040a9d47d8f4a47025c.tar.bz2
mpv-39451732e905e5884a04e040a9d47d8f4a47025c.tar.xz
demux_disc: bluray: potentially fix some aspects of seeking
When flushing the AVIOContext, make sure it can't seek back to discarded data. buf_ptr is just the current read position, while buf_end - buffer is the actual buffer size. Since mpegts.c is littered with seek calls, it might be that the ability to seek could read Mark the stream (which the demuxer uses) as not seekable. The cache can enable seeking again (this behavior is sometimes useful for other things). I think this should have had no bad influence in theory, since seeking BD/DVD first does the "real" seek, then flushes libavformat and reads new packets.
Diffstat (limited to 'demux/demux_lavf.c')
-rw-r--r--demux/demux_lavf.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/demux/demux_lavf.c b/demux/demux_lavf.c
index 578e061d46..8dd248aec1 100644
--- a/demux/demux_lavf.c
+++ b/demux/demux_lavf.c
@@ -1014,7 +1014,7 @@ redo:
AVSEEK_FLAG_BYTE);
// avio_flush() is designed for write-only streams, and does the wrong
// thing when reading. Flush it manually instead.
- priv->avfc->pb->buf_ptr = priv->avfc->pb->buf_end;
+ priv->avfc->pb->buf_ptr = priv->avfc->pb->buf_end = priv->avfc->pb->buffer;
stream_drop_buffers(demuxer->stream);
return DEMUXER_CTRL_OK;
default: