diff --git a/docs/html/config_tvadapters.html b/docs/html/config_tvadapters.html index 939a3baa..e5426b19 100644 --- a/docs/html/config_tvadapters.html +++ b/docs/html/config_tvadapters.html @@ -57,6 +57,10 @@
PIDs in setup
Enable, if the SAT>IP box requires pids=0 parameter in the SETUP RTSP command.
+
Force pilot for DVB-S2
+
Enable, if the SAT>IP box requiest plts=on parameter in the SETUP RTSP + command for DVB-S2 muxes.
+
UDP RTP Port Number (2 ports)
Force the local UDP Port number here. The number should be even (RTP port). The next odd number (+1) will be used as the RTCP port.
diff --git a/src/input/mpegts/satip/satip.c b/src/input/mpegts/satip/satip.c index f87dca4c..b3126be4 100644 --- a/src/input/mpegts/satip/satip.c +++ b/src/input/mpegts/satip/satip.c @@ -112,6 +112,13 @@ const idclass_t satip_device_class = .opts = PO_ADVANCED, .off = offsetof(satip_device_t, sd_pids0), }, + { + .type = PT_BOOL, + .id = "piloton", + .name = "Force pilot for DVB-S2", + .opts = PO_ADVANCED, + .off = offsetof(satip_device_t, sd_pilot_on), + }, { .type = PT_STR, .id = "bindaddr", @@ -280,6 +287,9 @@ satip_device_hack( satip_device_t *sd ) } else if (strstr(sd->sd_info.location, ":8888/octonet.xml")) { /* OctopusNet requires pids in the SETUP RTSP command */ sd->sd_pids0 = 1; + } else if (strstr(sd->sd_info.manufacturer, "Triax") && + strstr(sd->sd_info.modelname, "TSS400")) { + sd->sd_pilot_on = 1; } } diff --git a/src/input/mpegts/satip/satip_frontend.c b/src/input/mpegts/satip/satip_frontend.c index d758abab..224b2341 100644 --- a/src/input/mpegts/satip/satip_frontend.c +++ b/src/input/mpegts/satip/satip_frontend.c @@ -989,6 +989,8 @@ satip_frontend_input_thread ( void *aux ) position = lfe_master->sf_position; if (lfe->sf_device->sd_pids0) rtsp_flags |= SATIP_SETUP_PIDS0; + if (lfe->sf_device->sd_pilot_on) + rtsp_flags |= SATIP_SETUP_PILOT_ON; r = satip_rtsp_setup(rtsp, position, lfe->sf_number, lfe->sf_rtp_port, &lm->lm_tuning, diff --git a/src/input/mpegts/satip/satip_private.h b/src/input/mpegts/satip/satip_private.h index 93782b55..563d0fb4 100644 --- a/src/input/mpegts/satip/satip_private.h +++ b/src/input/mpegts/satip/satip_private.h @@ -80,6 +80,7 @@ struct satip_device int sd_pids_deladd; int sd_sig_scale; int sd_pids0; + int sd_pilot_on; pthread_mutex_t sd_tune_mutex; }; @@ -208,14 +209,15 @@ int satip_satconf_get_position * RTSP part */ -#define SATIP_SETUP_PLAY (1<<0) -#define SATIP_SETUP_PIDS0 (1<<1) +#define SATIP_SETUP_PLAY (1<<0) +#define SATIP_SETUP_PIDS0 (1<<1) +#define SATIP_SETUP_PILOT_ON (1<<2) int satip_rtsp_setup( http_client_t *hc, int src, int fe, int udp_port, const dvb_mux_conf_t *dmc, - int pids0 ); + int flags ); int satip_rtsp_play( http_client_t *hc, const char *pids, diff --git a/src/input/mpegts/satip/satip_rtsp.c b/src/input/mpegts/satip/satip_rtsp.c index a23fb609..ad3aa1cd 100644 --- a/src/input/mpegts/satip/satip_rtsp.c +++ b/src/input/mpegts/satip/satip_rtsp.c @@ -172,8 +172,12 @@ satip_rtsp_setup( http_client_t *hc, int src, int fe, dmc->dmc_fe_rolloff != DVB_ROLLOFF_AUTO) ADD(dmc_fe_rolloff, ro, "0.35"); if (dmc->dmc_fe_pilot != DVB_PILOT_NONE && - dmc->dmc_fe_pilot != DVB_PILOT_AUTO) + dmc->dmc_fe_pilot != DVB_PILOT_AUTO) { ADD(dmc_fe_pilot, plts, "auto"); + } else if ((flags & SATIP_SETUP_PILOT_ON) != 0 && + dmc->dmc_fe_delsys == DVB_SYS_DVBS2) { + strcat(buf, "&plts=on"); + } } else if (dmc->dmc_fe_delsys == DVB_SYS_DVBC_ANNEX_A || dmc->dmc_fe_delsys == DVB_SYS_DVBC_ANNEX_B || dmc->dmc_fe_delsys == DVB_SYS_DVBC_ANNEX_C) {