]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
ATSC: In VCT, if tsid is 0, assume it's current mux
authorAndreas Öman <andreas@lonelycoder.com>
Wed, 6 Feb 2013 08:22:06 +0000 (03:22 -0500)
committerAndreas Öman <andreas@lonelycoder.com>
Wed, 6 Feb 2013 08:22:06 +0000 (03:22 -0500)
src/dvb/dvb_tables.c

index 1a8fee98446b93e3f6eec4f73c4da7430701b480..2dbe5474f2e42949e5eb48fa934162b2d00f4c65 100644 (file)
@@ -967,6 +967,7 @@ static int
 atsc_vct_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len,
                  uint8_t tableid, void *opaque)
 {
+  th_dvb_mux_instance_t *tdmi0 = tdmi;
   th_dvb_adapter_t *tda = tdmi->tdmi_adapter;
   service_t *t;
   int numch;
@@ -1000,15 +1001,18 @@ atsc_vct_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len,
 
     tsid = (ptr[22] << 8) | ptr[23];
     onid = (ptr[24] << 8) | ptr[25];
-    
-    /* Search all muxes on adapter */
-    LIST_FOREACH(tdmi, &tda->tda_muxes, tdmi_adapter_link)
-      if(tdmi->tdmi_transport_stream_id == tsid &&
-         tdmi->tdmi_network_id          == onid);
-             break;
-    
-    if(tdmi == NULL)
-      continue;
+
+    if(tsid == 0) {
+      tdmi = tdmi0;
+    } else {
+        /* Search all muxes on adapter */
+      LIST_FOREACH(tdmi, &tda->tda_muxes, tdmi_adapter_link) {
+        if(tdmi->tdmi_transport_stream_id == tsid && tdmi->tdmi_network_id == onid)
+          break;
+      }
+      if(tdmi == NULL)
+        continue;
+    }
 
     service_id = (ptr[24] << 8) | ptr[25];
     if((t = dvb_service_find(tdmi, service_id, 0, NULL)) == NULL)