diff --git a/src/input/mpegts/iptv/iptv_mux.c b/src/input/mpegts/iptv/iptv_mux.c index fba69fe..857418b 100644 --- a/src/input/mpegts/iptv/iptv_mux.c +++ b/src/input/mpegts/iptv/iptv_mux.c @@ -259,6 +259,20 @@ const idclass_t iptv_mux_class = }, { .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), + .opts = PO_ADVANCED + }, + { + .type = PT_U32, + .id = "iptv_satip_dvbs_freq", + .name = N_("SAT>IP DVB-S frequency (Hz)"), + .off = offsetof(iptv_mux_t, mm_iptv_satip_dvbs_freq), + .opts = PO_ADVANCED + }, + { + .type = PT_U32, .id = "iptv_buffer_limit", .name = N_("Buffering limit (ms)"), .desc = N_("Specifies the incoming buffering limit in " diff --git a/src/input/mpegts/iptv/iptv_private.h b/src/input/mpegts/iptv/iptv_private.h index 851eef7..9fa6029 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/input/mpegts/satip/satip.c b/src/input/mpegts/satip/satip.c index c326233..605c728 100644 --- a/src/input/mpegts/satip/satip.c +++ b/src/input/mpegts/satip/satip.c @@ -202,6 +202,8 @@ static const char *satip_tunercfg_tab[] = { "DVBS2-2,DVB-C2", "DVBC-1,DVBS2-1", "DVBC-2,DVBS2-2", + "DVBS2-4,DVBT-2", + "DVBS2-4,DVBC-2", NULL }; diff --git a/src/satip/rtsp.c b/src/satip/rtsp.c index 31fa433..9fcc185 100644 --- a/src/satip/rtsp.c +++ b/src/satip/rtsp.c @@ -553,9 +553,14 @@ rtsp_start } #if ENABLE_IPTV if (idnode_is_instance(&mn->mn_id, &iptv_network_class)) { - LIST_FOREACH(mux, &mn->mn_muxes, mm_network_link) + 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) break; + if (deltaU32(rs->dmc.dmc_fe_freq, ((iptv_mux_t *)mux)->mm_iptv_satip_dvbc_freq) < 2000) + break; + if (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 1b6a341..b43aaa7 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) {