diff options
Diffstat (limited to 'demux/demux_lavf.c')
-rw-r--r-- | demux/demux_lavf.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/demux/demux_lavf.c b/demux/demux_lavf.c index 19997a1855..eae78f9b4c 100644 --- a/demux/demux_lavf.c +++ b/demux/demux_lavf.c @@ -1063,6 +1063,14 @@ static int demux_open_lavf(demuxer_t *demuxer, enum demux_check check) demuxer->seekable = true; } + if (demuxer->fully_read) { + demux_close_stream(demuxer); + if (priv->own_stream) + free_stream(priv->stream); + priv->own_stream = false; + priv->stream = demuxer->stream; + } + return 0; } @@ -1179,18 +1187,10 @@ static void demux_seek_lavf(demuxer_t *demuxer, double seek_pts, int flags) static int demux_lavf_control(demuxer_t *demuxer, int cmd, void *arg) { - lavf_priv_t *priv = demuxer->priv; - switch (cmd) { case DEMUXER_CTRL_SWITCHED_TRACKS: select_tracks(demuxer, 0); return CONTROL_OK; - case DEMUXER_CTRL_REPLACE_STREAM: - if (priv->own_stream) - free_stream(priv->stream); - priv->own_stream = false; - priv->stream = demuxer->stream; - return CONTROL_OK; default: return CONTROL_UNKNOWN; } |