From 11f12e49eb85c3b776bbb42d9b041aa74917dda7 Mon Sep 17 00:00:00 2001 From: Mathieu Duponchelle Date: Fri, 4 Sep 2020 21:09:17 +0200 Subject: [PATCH] rtsptransport: support single port for client_port and server_port This is explicitly specified as valid in the RFC, where the syntax for both parameters is: ";" "client_port" "=" port [ "-" port ] ";" "server_port" "=" port [ "-" port ] This is useful for applications where RTCP is either not necessary or not possible. Part-of: --- gst-libs/gst/rtsp/gstrtsptransport.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/gst-libs/gst/rtsp/gstrtsptransport.c b/gst-libs/gst/rtsp/gstrtsptransport.c index 2884c55baf..3a48e5c971 100644 --- a/gst-libs/gst/rtsp/gstrtsptransport.c +++ b/gst-libs/gst/rtsp/gstrtsptransport.c @@ -700,7 +700,11 @@ gst_rtsp_transport_as_text (GstRTSPTransport * transport) if (transport->client_port.min < 65536 && transport->client_port.max < 65536) { g_ptr_array_add (strs, g_strdup (";client_port=")); - g_ptr_array_add (strs, range_as_text (&transport->client_port)); + if (transport->client_port.max > 0) + g_ptr_array_add (strs, range_as_text (&transport->client_port)); + else + g_ptr_array_add (strs, g_strdup_printf ("%d", + transport->client_port.min)); } else goto invalid_transport; } @@ -711,7 +715,11 @@ gst_rtsp_transport_as_text (GstRTSPTransport * transport) if (transport->server_port.min < 65536 && transport->server_port.max < 65536) { g_ptr_array_add (strs, g_strdup (";server_port=")); - g_ptr_array_add (strs, range_as_text (&transport->server_port)); + if (transport->server_port.max > 0) + g_ptr_array_add (strs, range_as_text (&transport->server_port)); + else + g_ptr_array_add (strs, g_strdup_printf ("%d", + transport->server_port.min)); } else goto invalid_transport; }