diff --git a/src/input/mpegts/satip/satip_frontend.c b/src/input/mpegts/satip/satip_frontend.c index f9193c3..91582ca 100644 --- a/src/input/mpegts/satip/satip_frontend.c +++ b/src/input/mpegts/satip/satip_frontend.c @@ -165,6 +165,16 @@ const idclass_t satip_frontend_class = .opts = PO_ADVANCED, }, { + .type = PT_BOOL, + .id = "no_tcp_mode", + .name = N_("Not use RTP/AVP/TCP"), + .desc = N_("Not use the RTP/AVP/TCP transfer mode " + "for this tuner even if the server supports it " + "and the client is configured to do so."), + .off = offsetof(satip_frontend_t, sf_no_tcp_mode), + .opts = PO_ADVANCED, + }, + { .type = PT_INT, .id = "tdelay", .name = N_("Next tune delay in ms (0-2000)"), @@ -1569,7 +1579,7 @@ new_tune: seq = -1; lfe->sf_seq = -1; play2 = 1; - rtsp_flags = lfe->sf_device->sd_tcp_mode ? SATIP_SETUP_TCP : 0; + rtsp_flags = lfe->sf_device->sd_tcp_mode ? lfe->sf_no_tcp_mode ? 0 : SATIP_SETUP_TCP : 0; if ((rtsp_flags & SATIP_SETUP_TCP) == 0) { if (udp_bind_double(&rtp, &rtcp, diff --git a/src/input/mpegts/satip/satip_private.h b/src/input/mpegts/satip/satip_private.h index 7c49ea1..b263cb4 100644 --- a/src/input/mpegts/satip/satip_private.h +++ b/src/input/mpegts/satip/satip_private.h @@ -134,6 +134,7 @@ struct satip_frontend char *sf_type_override; int sf_master; int sf_udp_rtp_port; + int sf_no_tcp_mode; int sf_play2; int sf_tdelay; int sf_grace_period; diff --git a/src/satip/rtsp.c b/src/satip/rtsp.c index aa40668..6e46871 100644 --- a/src/satip/rtsp.c +++ b/src/satip/rtsp.c @@ -861,7 +861,7 @@ parse_transport(http_connection_t *hc) if (a + 1 != b) return -1; return a; - } else if (strncmp(s, "RTP/AVP/TCP;interleaved=0-1", 27) == 0) { + } else if ((strncmp(s, "RTP/AVP/TCP;interleaved=0-1", 27) == 0) && !satip_server_conf.satip_notcp_mode) { return RTSP_TCP_DATA; } return -1; diff --git a/src/satip/server.c b/src/satip/server.c index c429056..feca0a8 100644 --- a/src/satip/server.c +++ b/src/satip/server.c @@ -717,6 +717,16 @@ const idclass_t satip_server_class = { .group = 1, }, { + .type = PT_BOOL, + .id = "satip_notcp_mode", + .name = N_("Disable RTP/AVP/TCP support"), + .desc = N_("Remove server support for RTP/AVP/TCP transfer mode " + "(embedded data in the RTSP session)."), + .off = offsetof(struct satip_server_conf, satip_notcp_mode), + .opts = PO_EXPERT, + .group = 1, + }, + { .type = PT_U32, .id = "satip_iptv_sig_level", .name = N_("IPTV signal level"), diff --git a/src/satip/server.h b/src/satip/server.h index 471027f..f228f60 100644 --- a/src/satip/server.h +++ b/src/satip/server.h @@ -47,6 +47,7 @@ struct satip_server_conf { int satip_rewrite_pmt; int satip_muxcnf; int satip_nom3u; + int satip_notcp_mode; int satip_anonymize; int satip_iptv_sig_level; int satip_force_sig_level;