]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
mpegts service: Add 'Service IDs as Channel Numbers' network option
authorJaroslav Kysela <perex@perex.cz>
Sun, 18 Jan 2015 19:21:33 +0000 (20:21 +0100)
committerJaroslav Kysela <perex@perex.cz>
Sun, 18 Jan 2015 19:21:33 +0000 (20:21 +0100)
src/input/mpegts.h
src/input/mpegts/mpegts_network.c
src/input/mpegts/mpegts_service.c

index 20f25bb133e61b52d7cca4695ee5048ef3798155..0a26eeecdc95c1c99f857a8f912607e584d59bb1 100644 (file)
@@ -298,6 +298,7 @@ struct mpegts_network
   char    *mn_charset;
   int      mn_idlescan;
   int      mn_ignore_chnum;
+  int      mn_sid_chnum;
   int      mn_localtime;
 };
 
index 73ac346305b435ba450de8a93e2d1e00bb30399d..cb2847e867f98d18340bc3c70f4e309693b1358a 100644 (file)
@@ -174,6 +174,13 @@ const idclass_t mpegts_network_class =
       .notify   = mpegts_network_class_idlescan_notify,
       .opts     = PO_ADVANCED | PO_HIDDEN,
     },
+    {
+      .type     = PT_BOOL,
+      .id       = "sid_chnum",
+      .name     = "Service IDs as Channel Numbers",
+      .off      = offsetof(mpegts_network_t, mn_ignore_chnum),
+      .def.i    = 0,
+    },
     {
       .type     = PT_BOOL,
       .id       = "ignore_chnum",
index 28ad858ceb8b879011eaa214812067b986909aff..a9835eec00ddd77f9cfc8f8edf632a5e09c0c49a 100644 (file)
@@ -409,14 +409,15 @@ static int64_t
 mpegts_service_channel_number ( service_t *s )
 {
   mpegts_service_t *ms = (mpegts_service_t*)s;
-  int r;
-
-  if (ms->s_dvb_mux->mm_network->mn_ignore_chnum)
-    return 0;
+  int r = 0;
 
-  r = ms->s_dvb_channel_num * CHANNEL_SPLIT + ms->s_dvb_channel_minor;
-  if (r <= 0)
-    r = ms->s_dvb_opentv_chnum * CHANNEL_SPLIT;
+  if (!ms->s_dvb_mux->mm_network->mn_ignore_chnum) {
+    r = ms->s_dvb_channel_num * CHANNEL_SPLIT + ms->s_dvb_channel_minor;
+    if (r <= 0)
+      r = ms->s_dvb_opentv_chnum * CHANNEL_SPLIT;
+  }
+  if (r <= 0 || ms->s_dvb_mux->mm_network->mn_sid_chnum)
+    r = ms->s_dvb_service_id * CHANNEL_SPLIT;
   return r;
 }