diff options
author | phintuka <phintuka> | 2010-07-18 13:10:14 +0000 |
---|---|---|
committer | phintuka <phintuka> | 2010-07-18 13:10:14 +0000 |
commit | 5a92211f30d4d408a1961b8b55712836aef64062 (patch) | |
tree | 675939342f283b5dc4fe58c92c7f77a02c7c9b0c | |
parent | 91d5d419eba0d16aae7ec49656dca6e8d64c87b5 (diff) | |
download | xineliboutput-5a92211f30d4d408a1961b8b55712836aef64062.tar.gz xineliboutput-5a92211f30d4d408a1961b8b55712836aef64062.tar.bz2 |
Do not flush demuxer when received PAT has not been changed
(This should fix some timestamp problems)
-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); + } } } |