summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorphintuka <phintuka>2010-07-18 13:10:14 +0000
committerphintuka <phintuka>2010-07-18 13:10:14 +0000
commit5a92211f30d4d408a1961b8b55712836aef64062 (patch)
tree675939342f283b5dc4fe58c92c7f77a02c7c9b0c
parent91d5d419eba0d16aae7ec49656dca6e8d64c87b5 (diff)
downloadxineliboutput-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.c18
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);
+ }
}
}