diff options
Diffstat (limited to 'demux')
-rw-r--r-- | demux/demux.c | 5 | ||||
-rw-r--r-- | demux/demux.h | 2 | ||||
-rw-r--r-- | demux/demux_mkv.c | 2 |
3 files changed, 9 insertions, 0 deletions
diff --git a/demux/demux.c b/demux/demux.c index 06511aaa50..930d19f9cd 100644 --- a/demux/demux.c +++ b/demux/demux.c @@ -1378,6 +1378,11 @@ void demux_unpause(demuxer_t *demuxer) pthread_mutex_unlock(&in->lock); } +bool demux_cancel_test(struct demuxer *demuxer) +{ + return mp_cancel_test(demuxer->stream->cancel); +} + struct demux_chapter *demux_copy_chapter_data(struct demux_chapter *c, int num) { struct demux_chapter *new = talloc_array(NULL, struct demux_chapter, num); diff --git a/demux/demux.h b/demux/demux.h index b2bedf0a23..0078ca8a7b 100644 --- a/demux/demux.h +++ b/demux/demux.h @@ -251,6 +251,8 @@ void demux_start_thread(struct demuxer *demuxer); void demux_stop_thread(struct demuxer *demuxer); void demux_set_wakeup_cb(struct demuxer *demuxer, void (*cb)(void *ctx), void *ctx); +bool demux_cancel_test(struct demuxer *demuxer); + void demux_flush(struct demuxer *demuxer); int demux_seek(struct demuxer *demuxer, double rel_seek_secs, int flags); diff --git a/demux/demux_mkv.c b/demux/demux_mkv.c index 1a3f8f0a84..9cc521fab8 100644 --- a/demux/demux_mkv.c +++ b/demux/demux_mkv.c @@ -2522,6 +2522,8 @@ static int read_next_block(demuxer_t *demuxer, struct block_info *block) break; if (s->eof) return -1; + if (demux_cancel_test(demuxer)) + return -1; if (id == EBML_ID_EBML && stream_tell(s) >= mkv_d->segment_end) { // Appended segment - don't use its clusters, consider this EOF. stream_seek(s, stream_tell(s) - 4); |