From: Jaroslav Kysela Date: Mon, 18 Sep 2017 12:31:52 +0000 (+0200) Subject: satip server: add possibility to export DVB-C and DVB-S2 muxes for IPTV input, fixes... X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c0c43d4d944798a6b52d0345983d1a2c505e135d;p=thirdparty%2Ftvheadend.git satip server: add possibility to export DVB-C and DVB-S2 muxes for IPTV input, fixes #4243 From: Mono Polimorph --- diff --git a/src/input/mpegts/iptv/iptv_mux.c b/src/input/mpegts/iptv/iptv_mux.c index fba69fee5..d993e5d48 100644 --- a/src/input/mpegts/iptv/iptv_mux.c +++ b/src/input/mpegts/iptv/iptv_mux.c @@ -255,6 +255,23 @@ const idclass_t iptv_mux_class = .id = "iptv_satip_dvbt_freq", .name = N_("SAT>IP DVB-T frequency (Hz)"), .off = offsetof(iptv_mux_t, mm_iptv_satip_dvbt_freq), + .desc = N_("For example: 658000000. This frequency is 658Mhz."), + .opts = PO_ADVANCED + }, + { + .type = PT_U32, + .id = "iptv_satip_dvbc_freq", + .name = N_("SAT>IP DVB-C frequency (Hz)"), + .off = offsetof(iptv_mux_t, mm_iptv_satip_dvbc_freq), + .desc = N_("For example: 312000000. This frequency is 312Mhz."), + .opts = PO_ADVANCED + }, + { + .type = PT_U32, + .id = "iptv_satip_dvbs_freq", + .name = N_("SAT>IP DVB-S frequency (kHz)"), + .off = offsetof(iptv_mux_t, mm_iptv_satip_dvbs_freq), + .desc = N_("For example: 12610500. This frequency is 12610.5Mhz or 12.6105Ghz."), .opts = PO_ADVANCED }, { diff --git a/src/input/mpegts/iptv/iptv_private.h b/src/input/mpegts/iptv/iptv_private.h index 851eef7d7..9fa60297e 100644 --- a/src/input/mpegts/iptv/iptv_private.h +++ b/src/input/mpegts/iptv/iptv_private.h @@ -132,6 +132,8 @@ struct iptv_mux char *mm_iptv_hdr; char *mm_iptv_tags; uint32_t mm_iptv_satip_dvbt_freq; + uint32_t mm_iptv_satip_dvbc_freq; + uint32_t mm_iptv_satip_dvbs_freq; uint32_t mm_iptv_rtp_seq; diff --git a/src/satip/rtsp.c b/src/satip/rtsp.c index 5550c8496..b7c03883a 100644 --- a/src/satip/rtsp.c +++ b/src/satip/rtsp.c @@ -556,9 +556,17 @@ rtsp_start } #if ENABLE_IPTV if (idnode_is_instance(&mn->mn_id, &iptv_network_class)) { - LIST_FOREACH(mux, &mn->mn_muxes, mm_network_link) - if (deltaU32(rs->dmc.dmc_fe_freq, ((iptv_mux_t *)mux)->mm_iptv_satip_dvbt_freq) < 2000) + LIST_FOREACH(mux, &mn->mn_muxes, mm_network_link) { + if (rs->dmc.dmc_fe_type == DVB_TYPE_T && + deltaU32(rs->dmc.dmc_fe_freq, ((iptv_mux_t *)mux)->mm_iptv_satip_dvbt_freq) < 2000) break; + if (rs->dmc.dmc_fe_type == DVB_TYPE_C && + deltaU32(rs->dmc.dmc_fe_freq, ((iptv_mux_t *)mux)->mm_iptv_satip_dvbc_freq) < 2000) + break; + if (rs->dmc.dmc_fe_type == DVB_TYPE_S && + deltaU32(rs->dmc.dmc_fe_freq, ((iptv_mux_t *)mux)->mm_iptv_satip_dvbs_freq) < 2000) + break; + } if (mux) { dmc = rs->dmc; rs->perm_lock = 1; diff --git a/src/satip/server.c b/src/satip/server.c index 89730947b..eeef9f1a8 100644 --- a/src/satip/server.c +++ b/src/satip/server.c @@ -152,14 +152,25 @@ satip_server_http_xml(http_connection_t *hc) #if ENABLE_IPTV else if (idnode_is_instance(&mn->mn_id, &iptv_network_class)) { mpegts_mux_t *mm; - LIST_FOREACH(mm, &mn->mn_muxes, mm_network_link) + LIST_FOREACH(mm, &mn->mn_muxes, mm_network_link) { if (((iptv_mux_t *)mm)->mm_iptv_satip_dvbt_freq) { dvbt++; - break; } + if (((iptv_mux_t *)mm)->mm_iptv_satip_dvbc_freq) { + dvbc++; + } + if (((iptv_mux_t *)mm)->mm_iptv_satip_dvbs_freq) { + dvbs++; + } + } } #endif } + // The SAT>IP specification only supports 1-9 tuners (1 digit)! + if (dvbt > 9) dvbt = 9; + if (dvbc > 9) dvbc = 9; + if (dvbs > 9) dvbs = 9; + if (atsc > 9) atsc = 9; for (p = xtab; p->id; p++) { i = *p->cptr; if (i > 0) {