diff options
author | wm4 <wm4@nowhere> | 2015-02-18 21:09:47 +0100 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2015-02-18 21:12:57 +0100 |
commit | ff992e093b93fd8dd0eecd2c592f8608870f0bbe (patch) | |
tree | 0941260079de6b0c0bb34855d95469fea65b017b /demux/demux_lavf.c | |
parent | 69e6e7b17cd56c2c8cffabe7230557836b92f0d0 (diff) | |
download | mpv-ff992e093b93fd8dd0eecd2c592f8608870f0bbe.tar.bz2 mpv-ff992e093b93fd8dd0eecd2c592f8608870f0bbe.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.)
Diffstat (limited to 'demux/demux_lavf.c')
-rw-r--r-- | demux/demux_lavf.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/demux/demux_lavf.c b/demux/demux_lavf.c index f6608259d8..13f14d9fa1 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) { |