mirror of https://github.com/mpv-player/mpv
demux_mkv: check for playback aborts
Check async abort notification. libavformat already do something equivalent. Before this commit, the demuxer could enter resync mode (and print silly warning messages) when the stream stopped returning data because of an abort.
This commit is contained in:
parent
5f0eda7b94
commit
39fa05d374
|
@ -1482,6 +1482,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);
|
||||
|
|
|
@ -270,6 +270,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);
|
||||
void demux_set_enable_refresh_seeks(struct demuxer *demuxer, bool enabled);
|
||||
|
|
|
@ -2524,6 +2524,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);
|
||||
|
|
Loading…
Reference in New Issue