]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
eit: try to fix the freesat issue, fixes #5247
authorJaroslav Kysela <perex@perex.cz>
Tue, 1 Jan 2019 18:14:49 +0000 (19:14 +0100)
committerJaroslav Kysela <perex@perex.cz>
Tue, 1 Jan 2019 18:14:49 +0000 (19:14 +0100)
data/conf/epggrab/eit/config
src/epggrab/module/eit.c

index c636d921d6deb7483f17380ede9f276edb9dea08..e8226ebafe678fef136ff6bfcb8364829a2db102 100644 (file)
@@ -8,10 +8,15 @@
     "pid": 3003,
     "conv": "huffman",
     "nit": {
-      "Freesat": 1
+      "Freesat": {
+        "onid": 59,
+        "nbid": 59,
+        "tsid": 2315
+      }
     },
     "priv": 1179861332,
     "hacks": {
+       "eit": 1,
        "bat": { "pid": 3002 },
        "interest-4e": 1
     }
index 4304f3b76cf7031bd993dc0ea5d04780127637d5..7dcfe085ecfd366946e0e9874e4f68ef8dc94da8 100644 (file)
@@ -69,9 +69,10 @@ typedef struct eit_private
 
 #define EIT_CONV_HUFFMAN            1
 
-#define EIT_HACK_INTEREST4E         (1<<0)
-#define EIT_HACK_EXTRAMUXLOOKUP     (1<<1)
-#define EIT_HACK_SVCNETLOOKUP       (1<<2)
+#define EIT_HACK_EIT                (1<<0)
+#define EIT_HACK_INTEREST4E         (1<<1)
+#define EIT_HACK_EXTRAMUXLOOKUP     (1<<2)
+#define EIT_HACK_SVCNETLOOKUP       (1<<3)
 
 /* Queued data structure */
 typedef struct eit_data
@@ -1113,8 +1114,8 @@ static void _eit_install_handlers
   ( epggrab_ota_map_t *_map, mpegts_mux_t *dm )
 {
   epggrab_ota_mux_t *om;
-  epggrab_ota_map_t *map;
-  epggrab_module_ota_t *m;
+  epggrab_ota_map_t *map, *map2;
+  epggrab_module_ota_t *m, *m2;
   epggrab_ota_mux_eit_plist_t *plist;
   eit_private_t *priv, *priv2;
   int pid, opts;
@@ -1164,10 +1165,23 @@ static void _eit_install_handlers
     opts = MT_RECORD;
   }
 
+  if (priv->hacks & EIT_HACK_EIT) {
+    m2 = (epggrab_module_ota_t *)epggrab_module_find_by_id("eit");
+    if (m2 && m2->enabled) {
+      LIST_FOREACH(map2, &om->om_modules, om_link)
+        if (map2->om_module == m2)
+         break;
+      if (map2) {
+        mpegts_table_add(dm, 0, 0, _eit_callback, map2, map->om_module->id, LS_TBL_EIT,
+                         MT_CRC | MT_RECORD, DVB_EIT_PID, MPS_WEIGHT_EIT);
+        tvhdebug(m->subsys, "%s: installed table handler (pid %d)", m2->id, DVB_EIT_PID);
+      }
+    }
+  }
+
   mpegts_table_add(dm, 0, 0, _eit_callback, map, map->om_module->id, LS_TBL_EIT,
                    MT_CRC | opts, pid, MPS_WEIGHT_EIT);
-  // TODO: might want to limit recording to EITpf only
-  tvhdebug(m->subsys, "%s: installed table handlers", m->id);
+  tvhdebug(m->subsys, "%s: installed table handler (pid %d)", m->id, pid);
 }
 
 static int _eit_activate(void *m, int e)
@@ -1580,7 +1594,9 @@ static void eit_init_one ( const char *id, htsmsg_t *conf )
   map = htsmsg_get_map(conf, "hacks");
   if (map) {
     HTSMSG_FOREACH(f, map) {
-      if (strcmp(htsmsg_field_name(f), "interest-4e") == 0)
+      if (strcmp(htsmsg_field_name(f), "eit") == 0)
+        priv->hacks |= EIT_HACK_EIT;
+      else if (strcmp(htsmsg_field_name(f), "interest-4e") == 0)
         priv->hacks |= EIT_HACK_INTEREST4E;
       else if (strcmp(htsmsg_field_name(f), "extra-mux-lookup") == 0)
         priv->hacks |= EIT_HACK_EXTRAMUXLOOKUP;