]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
tdt: some changes to SDT processing to pick up unknown services
authorAdam Sutton <dev@adamsutton.me.uk>
Tue, 16 Apr 2013 20:25:56 +0000 (21:25 +0100)
committerAdam Sutton <dev@adamsutton.me.uk>
Thu, 18 Apr 2013 10:54:39 +0000 (11:54 +0100)
src/dvb/dvb_tables.c

index d13da580aed4cd1298bb425f7b3eb3b1b354e227..7397561eff057642608671e68abd712db2b9abf1 100644 (file)
@@ -336,6 +336,11 @@ dvb_sdt_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len,
 
   tsid         = ptr[0] << 8 | ptr[1];
   onid         = ptr[5] << 8 | ptr[6];
+
+  tvhtrace("sdt", "onid %04X tsid %04X", onid, tsid);
+  tvhlog_hexdump("sdt", ptr, len);
+
+  /* Find Transport Stream */
   if (tableid == 0x42) {
     dvb_mux_set_tsid(tdmi, tsid, 0);
     dvb_mux_set_onid(tdmi, onid, 0);
@@ -348,8 +353,6 @@ dvb_sdt_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len,
         break;
     if (!tdmi) return -1;
   }
-  tvhtrace("sdt", "onid %04X tsid %04X", onid, tsid);
-  tvhlog_hexdump("sdt", ptr, len);
 
   //  version                     = ptr[2] >> 1 & 0x1f;
   //  section_number              = ptr[3];
@@ -427,12 +430,14 @@ dvb_sdt_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len,
       }
     }
 
-    if (!servicetype_is_tv(stype) &&
-        !servicetype_is_radio(stype))
-      continue;
+    if (!(t = dvb_service_find3(NULL, tdmi, NULL, 0, 0, service_id, 0, 0))) {
+      if (!servicetype_is_tv(stype) &&
+          !servicetype_is_radio(stype))
+        continue;
           
-    if (!(t = dvb_service_find(tdmi, service_id, 0, NULL)))
-      continue;
+      if (!(t = dvb_service_find(tdmi, service_id, 0, NULL)))
+        continue;
+    }
 
     if(t->s_servicetype != stype ||
        t->s_scrambled != free_ca_mode) {