From: Jaroslav Kysela Date: Tue, 1 Jan 2019 18:14:49 +0000 (+0100) Subject: eit: try to fix the freesat issue, fixes #5247 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e61adb3441b6ea8e9a25b1f4fd39d22d925fb588;p=thirdparty%2Ftvheadend.git eit: try to fix the freesat issue, fixes #5247 --- diff --git a/data/conf/epggrab/eit/config b/data/conf/epggrab/eit/config index c636d921d..e8226ebaf 100644 --- a/data/conf/epggrab/eit/config +++ b/data/conf/epggrab/eit/config @@ -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 } diff --git a/src/epggrab/module/eit.c b/src/epggrab/module/eit.c index 4304f3b76..7dcfe085e 100644 --- a/src/epggrab/module/eit.c +++ b/src/epggrab/module/eit.c @@ -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;