diff options
-rw-r--r-- | xine/demux_xvdr.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/xine/demux_xvdr.c b/xine/demux_xvdr.c index 419dcd29..08775ca2 100644 --- a/xine/demux_xvdr.c +++ b/xine/demux_xvdr.c @@ -506,13 +506,19 @@ static void demux_xvdr_parse_ts (demux_xvdr_t *this, buf_element_t *buf) if (ts_pid == 0) { pat_data_t pat; - ts_data_flush(ts_data); - if (ts_parse_pat(&pat, buf->content)) { - ts_data->pmt_pid = pat.pmt_pid[0]; - ts_data->program_number = pat.program_number[0]; - if (iSysLogLevel >= SYSLOGLEVEL_VERBOSE) - LOGDBG("Got PAT, PMT pid = %d, program = %d", ts_data->pmt_pid, ts_data->program_number); + if (ts_data->pmt_pid != pat.pmt_pid[0] || + ts_data->program_number != pat.program_number[0]) { + + LOGVERBOSE("PAT: program changed, flushing demuxer"); + + ts_data_flush(ts_data); + + ts_data->pmt_pid = pat.pmt_pid[0]; + ts_data->program_number = pat.program_number[0]; + } else { + LOGVERBOSE("Got PAT, PMT pid = %d, program = %d", ts_data->pmt_pid, ts_data->program_number); + } } } |