summaryrefslogtreecommitdiffstats
path: root/player/command.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2014-11-20 22:41:50 +0100
committerwm4 <wm4@nowhere>2014-11-20 22:41:50 +0100
commit2d039e691f4f8f7b340a113fc9f69fa5bfa6193a (patch)
treec576d7153b2dda918ed25cdf7c129a321e67de10 /player/command.c
parent7df909e9fcc897083d4af53939ab392ca708f808 (diff)
downloadmpv-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/command.c')
-rw-r--r--player/command.c10
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;