]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
mpegts network: Allow to ignore the channel numbers set by a provider
authorJaroslav Kysela <perex@perex.cz>
Mon, 13 Oct 2014 18:15:40 +0000 (20:15 +0200)
committerJaroslav Kysela <perex@perex.cz>
Mon, 13 Oct 2014 18:15:40 +0000 (20:15 +0200)
src/input/mpegts.h
src/input/mpegts/mpegts_network.c
src/input/mpegts/mpegts_service.c

index b6a0e24a51b2d4d479d9f14b039a5331275cd7de..addb8f9ac2a753a0ca3ff1609d670e5457d7a755 100644 (file)
@@ -291,6 +291,7 @@ struct mpegts_network
   int      mn_skipinitscan;
   char    *mn_charset;
   int      mn_idlescan;
+  int      mn_ignore_chnum;
 };
 
 typedef enum mpegts_mux_scan_state
index 9cbefe1f2c5cb8b610d3e0dffea8d3ac116d295d..d7f8561c625e447d880fddeb77ec071a3d0ebf0f 100644 (file)
@@ -149,6 +149,13 @@ const idclass_t mpegts_network_class =
       .def.i    = 0,
       .notify   = mpegts_network_class_idlescan_notify,
     },
+    {
+      .type     = PT_BOOL,
+      .id       = "ignore_chnum",
+      .name     = "Ignore Provider's Channel Numbers",
+      .off      = offsetof(mpegts_network_t, mn_ignore_chnum),
+      .def.i    = 0,
+    },
     {
       .type     = PT_STR,
       .id       = "charset",
index e1dba191ab9b132bec0c4b112c4b81d58beca9be..b966f8c60d69523da69670239196050a0b9078df 100644 (file)
@@ -376,10 +376,15 @@ mpegts_service_grace_period(service_t *t)
 static int64_t
 mpegts_service_channel_number ( service_t *s )
 {
-  int r = ((mpegts_service_t*)s)->s_dvb_channel_num * CHANNEL_SPLIT +
-          ((mpegts_service_t*)s)->s_dvb_channel_minor;
+  mpegts_service_t *ms = (mpegts_service_t*)s;
+  int r;
+
+  if (ms->s_dvb_mux->mm_network->mn_ignore_chnum)
+    return 0;
+
+  r = ms->s_dvb_channel_num * CHANNEL_SPLIT + ms->s_dvb_channel_minor;
   if (r <= 0)
-    r = ((mpegts_service_t*)s)->s_dvb_opentv_chnum * CHANNEL_SPLIT;
+    r = ms->s_dvb_opentv_chnum * CHANNEL_SPLIT;
   return r;
 }