]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
dvb psi: another TSID detection hacks / fixes in PAT callback (16.0E)
authorJaroslav Kysela <perex@perex.cz>
Sat, 28 May 2016 15:07:29 +0000 (17:07 +0200)
committerJaroslav Kysela <perex@perex.cz>
Sat, 28 May 2016 15:07:40 +0000 (17:07 +0200)
src/input/mpegts/dvb_psi.c

index ba1158c704c3ce9bc3ecb446add3180893cbcae0..4dad4aff56fe9ad9f167d77525f6eb9b23c8d883 100644 (file)
@@ -871,20 +871,21 @@ dvb_pat_callback
   r    = dvb_table_begin((mpegts_psi_table_t *)mt, ptr, len,
                          tableid, tsid, 5, &st, &sect, &last, &ver);
   if (r != 1) return r;
+  if (tsid == 0) goto end;
 
   /* Multiplex */
-  tvhdebug("pat", "tsid %04X (%d)", tsid, tsid);
+  tvhdebug("pat", "%p: tsid %04X (%d)", mm, tsid, tsid);
   if (mm->mm_tsid && mm->mm_tsid != tsid) {
     char buf[256];
-    if (++mm->mm_tsid_checks > 10) {
+    if (++mm->mm_tsid_checks > 12) {
       mpegts_mux_nice_name(mm, buf, sizeof(buf));
       tvhwarn("pat", "%s: TSID change detected - old %04x (%d), new %04x (%d)",
               buf, mm->mm_tsid, mm->mm_tsid, tsid, tsid);
     } else {
       if (tvhtrace_enabled()) {
         mpegts_mux_nice_name(mm, buf, sizeof(buf));
-        tvhtrace("pat", "%s: ignore TSID - old %04x (%d), new %04x (%d)",
-                 buf, mm->mm_tsid, mm->mm_tsid, tsid, tsid);
+        tvhtrace("pat", "%s: ignore TSID - old %04x (%d), new %04x (%d) (checks %d)",
+                 buf, mm->mm_tsid, mm->mm_tsid, tsid, tsid, mm->mm_tsid_checks);
       }
       return 0; /* keep rolling */
     }
@@ -933,6 +934,7 @@ dvb_pat_callback
                      MPS_WEIGHT_NIT);
 
   /* End */
+end:
   return dvb_table_end((mpegts_psi_table_t *)mt, st, sect);
 }