diff options
author | wm4 <wm4@nowhere> | 2014-11-20 22:41:50 +0100 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2014-11-20 22:41:50 +0100 |
commit | 2d039e691f4f8f7b340a113fc9f69fa5bfa6193a (patch) | |
tree | c576d7153b2dda918ed25cdf7c129a321e67de10 /player | |
parent | 7df909e9fcc897083d4af53939ab392ca708f808 (diff) | |
download | mpv-2d039e691f4f8f7b340a113fc9f69fa5bfa6193a.tar.bz2 mpv-2d039e691f4f8f7b340a113fc9f69fa5bfa6193a.tar.xz |
command: add drop_buffers
This command was actually requested on IRC ages ago, but I forgot about
it.
The main purpose is that the decoding state can be reset without issuing
a seek, in particular in situations where you can't seek.
This restarts decoding from the middle of the packet stream; since it
discards the packet buffer intentionally, and the decoder will typically
not output "incomplete" frames until it has recovered, it can skip a
large amount of data.
It doesn't clear the byte stream cache - I'm not sure if it should.
Diffstat (limited to 'player')
-rw-r--r-- | player/command.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/player/command.c b/player/command.c index 0559221322..d9a0d99745 100644 --- a/player/command.c +++ b/player/command.c @@ -4440,6 +4440,16 @@ int run_command(MPContext *mpctx, mp_cmd_t *cmd) return r > 0; } + case MP_CMD_DROP_BUFFERS: { + reset_audio_state(mpctx); + reset_video_state(mpctx); + + if (mpctx->demuxer) + demux_flush(mpctx->demuxer); + + break; + } + case MP_CMD_VO_CMDLINE: if (mpctx->video_out) { char *s = cmd->args[0].v.s; |