]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
Several enhancements
authorFlole998 <Flole998@users.noreply.github.com>
Sat, 20 Feb 2021 14:36:56 +0000 (15:36 +0100)
committerGitHub <noreply@github.com>
Sat, 20 Feb 2021 14:36:56 +0000 (15:36 +0100)
* Fix potential double-free

* Add Option to Map Muxes between different DVB-Types

* Fix potential endless loop in RTSP code

* Change years from 2020

src/config.c
src/dvr/dvr_autorec.c
src/input/mpegts/mpegts_dvb.h
src/input/mpegts/mpegts_mux_dvb.c
src/satip/rtsp.c
src/webui/extjs.c

index 612698e8327f2a747bcb4fb920e0af46cec05833..5e3462f0293bda7a74d14267248e818c0901e34f 100644 (file)
@@ -391,6 +391,7 @@ config_migrate_v1 ( void )
       if ((str = htsmsg_get_str(e, "name"))) {
         htsmsg_add_str(m, "name", str);
         htsmsg_add_msg(channels, str, m);
+        m = NULL;
       }
     }
     htsmsg_destroy(c);
index 01fc1b8fcabd01ec3a1fbfe98bc26f3e16346116..808b237ca269f4815d0c513364bb1ca65443b290 100644 (file)
@@ -976,7 +976,7 @@ dvr_autorec_entry_class_year_list ( void *o, const char *lang )
   /* We create the list from highest to lowest since you're more
    * likely to want to record something recent.
    */
-  for (i = 2020; i > 1900 ; i-=5) {
+  for (i = 2025; i > 1900 ; i-=5) {
     e = htsmsg_create_map();
     htsmsg_add_u32(e, "key", i);
     htsmsg_add_u32(e, "val", i);
index 9261a48594e4d68d15485411ee6dcfabcd9d1813..1ded80b58b167801cc56141a10e98d9b321b87ac 100644 (file)
@@ -38,6 +38,13 @@ typedef struct dvb_mux
    * Tuning information
    */
   dvb_mux_conf_t lm_tuning;
+
+  /*
+   * Frequencies for Mapping
+   */
+  uint32_t mm_dvb_satip_dvbt_freq;
+  uint32_t mm_dvb_satip_dvbc_freq;
+  uint32_t mm_dvb_satip_dvbs_freq;
 } dvb_mux_t;
 
 /*
index 35c70fdf5c72c0da252112f9e83ea68f1438f85d..726e3aa39ad67c351bfa0f6aae0fa38700b2aa7d 100644 (file)
@@ -530,6 +530,22 @@ const idclass_t dvb_mux_dvbs_class =
       .get      = dvb_mux_dvbs_class_orbital_get,
       .opts     = PO_ADVANCED | PO_RDONLY
     },
+    {
+      .type     = PT_U32,
+      .id       = "dvb_satip_dvbc_freq",
+      .name     = N_("SAT>IP DVB-C frequency (Hz)"),
+      .off      = offsetof(dvb_mux_t, mm_dvb_satip_dvbc_freq),
+      .desc     = N_("For example: 312000000. This frequency is 312Mhz."),
+      .opts     = PO_ADVANCED
+    },
+    {
+      .type     = PT_U32,
+      .id       = "dvb_satip_dvbt_freq",
+      .name     = N_("SAT>IP DVB-T frequency (Hz)"),
+      .off      = offsetof(dvb_mux_t, mm_dvb_satip_dvbt_freq),
+      .desc     = N_("For example: 312000000. This frequency is 312Mhz."),
+      .opts     = PO_ADVANCED
+    },
     {}
   }
 };
index 3bfab7122acc513ffeb0b810511acd4b792e39f0..5cc818feef2349c24a83b3a76e513237170c34d9 100644 (file)
@@ -555,7 +555,8 @@ rtsp_manage_descramble(session_t *rs)
       used++;
     } else if (!idnode_set_exists(found, &s->s_id)) {
       rtsp_slave_remove(rs, master, s);
-      si--;
+      if(si)
+          si--;
     }
   }
 
@@ -648,6 +649,24 @@ rtsp_start
         }
       }
 #endif
+      if (idnode_is_instance(&mn->mn_id, &dvb_network_class)) {
+        LIST_FOREACH(mux, &mn->mn_muxes, mm_network_link) {
+          if (rs->dmc.dmc_fe_type == DVB_TYPE_T &&
+              deltaU32(rs->dmc.dmc_fe_freq, ((dvb_mux_t *)mux)->mm_dvb_satip_dvbt_freq) < 2000)
+            break;
+          if (rs->dmc.dmc_fe_type == DVB_TYPE_C &&
+              deltaU32(rs->dmc.dmc_fe_freq, ((dvb_mux_t *)mux)->mm_dvb_satip_dvbc_freq) < 2000)
+            break;
+          if (rs->dmc.dmc_fe_type == DVB_TYPE_S &&
+              deltaU32(rs->dmc.dmc_fe_freq, ((dvb_mux_t *)mux)->mm_dvb_satip_dvbs_freq) < 2000)
+            break;
+          }
+        if (mux) {
+          dmc = rs->dmc;
+          rs->perm_lock = 1;
+          break;
+        }
+      }
     }
     if (mux == NULL && mn2 &&
         (rtsp_muxcnf == MUXCNF_AUTO || rtsp_muxcnf == MUXCNF_KEEP)) {
index 305b3e1d6236323d96feffad8d3f3b31e0209902..be0a0fa4d6c3e3d786dfc466778d0229d9b0f2e6 100644 (file)
@@ -187,7 +187,7 @@ page_about(http_connection_t *hc, const char *remain, void *opaque)
 
   htsbuf_qprintf(hq, "<center class=\"about-tab\">\n\
 <div class=\"about-title\">HTS Tvheadend %s</div>\n\
-<p>&copy; 2006 - 2020 Andreas Öman, Jaroslav Kysela, Adam Sutton, et al.</p>\n\
+<p>&copy; 2006 - 2021 Andreas Öman, Jaroslav Kysela, Adam Sutton, et al.</p>\n\
 <p><img class=\"logobig\" src=\"static/img/logobig.png\"></p>\n\
 <p><a href=\"https://tvheadend.org\">https://tvheadend.org</a></p>\n",
     tvheadend_version);