From: Flole998 Date: Sat, 20 Feb 2021 14:36:56 +0000 (+0100) Subject: Several enhancements X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b863e339033b5fffe4ab956663b814fa5896b725;p=thirdparty%2Ftvheadend.git Several enhancements * Fix potential double-free * Add Option to Map Muxes between different DVB-Types * Fix potential endless loop in RTSP code * Change years from 2020 --- diff --git a/src/config.c b/src/config.c index 612698e83..5e3462f02 100644 --- a/src/config.c +++ b/src/config.c @@ -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); diff --git a/src/dvr/dvr_autorec.c b/src/dvr/dvr_autorec.c index 01fc1b8fc..808b237ca 100644 --- a/src/dvr/dvr_autorec.c +++ b/src/dvr/dvr_autorec.c @@ -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); diff --git a/src/input/mpegts/mpegts_dvb.h b/src/input/mpegts/mpegts_dvb.h index 9261a4859..1ded80b58 100644 --- a/src/input/mpegts/mpegts_dvb.h +++ b/src/input/mpegts/mpegts_dvb.h @@ -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; /* diff --git a/src/input/mpegts/mpegts_mux_dvb.c b/src/input/mpegts/mpegts_mux_dvb.c index 35c70fdf5..726e3aa39 100644 --- a/src/input/mpegts/mpegts_mux_dvb.c +++ b/src/input/mpegts/mpegts_mux_dvb.c @@ -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 + }, {} } }; diff --git a/src/satip/rtsp.c b/src/satip/rtsp.c index 3bfab7122..5cc818fee 100644 --- a/src/satip/rtsp.c +++ b/src/satip/rtsp.c @@ -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)) { diff --git a/src/webui/extjs.c b/src/webui/extjs.c index 305b3e1d6..be0a0fa4d 100644 --- a/src/webui/extjs.c +++ b/src/webui/extjs.c @@ -187,7 +187,7 @@ page_about(http_connection_t *hc, const char *remain, void *opaque) htsbuf_qprintf(hq, "
\n\
HTS Tvheadend %s
\n\ -

© 2006 - 2020 Andreas Öman, Jaroslav Kysela, Adam Sutton, et al.

\n\ +

© 2006 - 2021 Andreas Öman, Jaroslav Kysela, Adam Sutton, et al.

\n\

\n\

https://tvheadend.org

\n", tvheadend_version);