summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2015-02-18 21:09:47 +0100
committerDiogo Franco (Kovensky) <diogomfranco@gmail.com>2015-02-19 13:39:39 +0900
commitc22c440c9c03c7273a0d5544c29e67d498e46c3d (patch)
tree728679fc611cef7e1c38cf2a208f0c98be815111
parentbe42f4c21276dcf574c41fba98232c87c038e029 (diff)
downloadmpv-c22c440c9c03c7273a0d5544c29e67d498e46c3d.tar.bz2
mpv-c22c440c9c03c7273a0d5544c29e67d498e46c3d.tar.xz
demux_lavf: set interrupt_callback
Helps with terminating the stream if e.g. HLS streams are stuck. (For other demuxers, the stream's interrupt callback already takes care of this.) (cherry picked from commit ff992e093b93fd8dd0eecd2c592f8608870f0bbe)
-rw-r--r--demux/demux_lavf.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/demux/demux_lavf.c b/demux/demux_lavf.c
index bc5d394eba..0db60f67e9 100644
--- a/demux/demux_lavf.c
+++ b/demux/demux_lavf.c
@@ -662,6 +662,12 @@ static void update_metadata(demuxer_t *demuxer, AVPacket *pkt)
#endif
}
+static int interrupt_cb(void *ctx)
+{
+ struct demuxer *demuxer = ctx;
+ return mp_cancel_test(demuxer->stream->cancel);
+}
+
static int demux_open_lavf(demuxer_t *demuxer, enum demux_check check)
{
struct MPOpts *opts = demuxer->opts;
@@ -750,6 +756,11 @@ static int demux_open_lavf(demuxer_t *demuxer, enum demux_check check)
av_dict_set(&dopts, "rtsp_transport", transport, 0);
}
+ avfc->interrupt_callback = (AVIOInterruptCB){
+ .callback = interrupt_cb,
+ .opaque = demuxer,
+ };
+
mp_set_avdict(&dopts, lavfdopts->avopts);
if (avformat_open_input(&avfc, priv->filename, priv->avif, &dopts) < 0) {