]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
pass muxer: another fixed for EIT callback, issue #5062
authorJaroslav Kysela <perex@perex.cz>
Fri, 12 Oct 2018 06:51:50 +0000 (08:51 +0200)
committerJaroslav Kysela <perex@perex.cz>
Fri, 12 Oct 2018 06:51:50 +0000 (08:51 +0200)
src/muxer/muxer_pass.c

index 28ec31dea50019e2d6327edd51b0016c41c8b11e..32f1277875bb1d26a010ec259e7e24df5454d844 100644 (file)
@@ -343,14 +343,12 @@ pass_muxer_eit_cb(mpegts_psi_table_t *mt, const uint8_t *buf, int len)
   uint8_t *sbuf, *out;
   int olen;
 
-  /* filter out the other transponders */
-  if ((buf[0] < 0x50 && buf[0] != 0x4e) || buf[0] > 0x5f || len < 14)
+  /* filter out wrong tables */
+  if (buf[0] < 0x4e || buf[0] > 0x6f || len < 14)
     return;
 
   pm = (pass_muxer_t*)mt->mt_opaque;
   sid = (buf[3] << 8) | buf[4];
-  if (sid != pm->pm_src_sid)
-    return;
 
   /* TODO: set free_CA_mode bit to zero */
 
@@ -363,6 +361,9 @@ pass_muxer_eit_cb(mpegts_psi_table_t *mt, const uint8_t *buf, int len)
   sbuf[10] = pm->pm_dst_onid >> 8;
   sbuf[11] = pm->pm_dst_onid;
 
+  if (sid != pm->pm_src_sid)
+    len = 14; /* no events, just keep the SI tables consistent */
+
   len = dvb_table_append_crc32(sbuf, len, len + 4);
   if (len > 0 && (olen = dvb_table_remux(mt, sbuf, len, &out)) > 0) {
     pass_muxer_write((muxer_t *)pm, out, olen);