From e3a3b764c8a98fbdca2e0e3677fdcf233169d666 Mon Sep 17 00:00:00 2001 From: wm4 Date: Sun, 6 Jul 2014 19:02:49 +0200 Subject: dvd: fix first subtitle with delayed subtitle streams This was accidentally broken with moving the DVD code to demux_disc.c. Also remove an abort() call meant for debugging. --- demux/demux.c | 1 + demux/demux.h | 1 + demux/demux_disc.c | 4 +++- 3 files changed, 5 insertions(+), 1 deletion(-) (limited to 'demux') diff --git a/demux/demux.c b/demux/demux.c index 3e08a7828b..047e77a486 100644 --- a/demux/demux.c +++ b/demux/demux.c @@ -127,6 +127,7 @@ struct sh_stream *new_sh_stream(demuxer_t *demuxer, enum stream_type type) .ds = talloc_zero(sh, struct demux_stream), }; sh->ds->demuxer = demuxer; + sh->ds->selected = demuxer->stream_select_default; MP_TARRAY_APPEND(demuxer, demuxer->streams, demuxer->num_streams, sh); switch (sh->type) { case STREAM_VIDEO: sh->video = talloc_zero(demuxer, struct sh_video); break; diff --git a/demux/demux.h b/demux/demux.h index 3567e830c0..c59af6a2fa 100644 --- a/demux/demux.h +++ b/demux/demux.h @@ -184,6 +184,7 @@ typedef struct demuxer { // File format allows PTS resets (even if the current file is without) bool ts_resets_possible; bool warned_queue_overflow; + bool stream_select_default; // initial selection status of a new stream // Bitmask of DEMUX_EVENT_* int events; diff --git a/demux/demux_disc.c b/demux/demux_disc.c index 823d5727c4..b8835da3c4 100644 --- a/demux/demux_disc.c +++ b/demux/demux_disc.c @@ -179,7 +179,6 @@ static int d_fill_buffer(demuxer_t *demuxer) add_streams(demuxer); if (pkt->stream >= p->num_streams) { // out of memory? - abort(); talloc_free(pkt); return 0; } @@ -225,6 +224,9 @@ static int d_open(demuxer_t *demuxer, enum demux_check check) if (!p->slave) return -1; + // So that we don't miss initial packets of delayed subtitle streams. + p->slave->stream_select_default = true; + // Incorrect, but fixes some behavior demuxer->ts_resets_possible = false; // Doesn't work, because stream_pts is a "guess". -- cgit v1.2.3