]> git.sesse.net Git - ffmpeg/commitdiff
rtpproto: Allow specifying a separate rtcp port in ff_rtp_set_remote_url
authorMartin Storsjö <martin@martin.st>
Wed, 31 Jul 2013 08:48:28 +0000 (11:48 +0300)
committerMartin Storsjö <martin@martin.st>
Thu, 1 Aug 2013 07:26:17 +0000 (10:26 +0300)
A separate rtcp port can already be set when opening the rtp
protocol normally, but when doing port setup as in RTSP (where
we first need to open the local ports and pass them to the peer,
and only then receive the remote peer port numbers), we didn't
check the same url parameter as in the normal open routine.

Signed-off-by: Martin Storsjö <martin@martin.st>
libavformat/rtpproto.c

index b21c1219c84628f1a5dc614865e4e48cf51e08ba..974aa351a5194a7c8abd0371e088b31ef4aefd5b 100644 (file)
@@ -61,18 +61,27 @@ int ff_rtp_set_remote_url(URLContext *h, const char *uri)
 {
     RTPContext *s = h->priv_data;
     char hostname[256];
-    int port;
+    int port, rtcp_port;
+    const char *p;
 
     char buf[1024];
     char path[1024];
 
     av_url_split(NULL, 0, NULL, 0, hostname, sizeof(hostname), &port,
                  path, sizeof(path), uri);
+    rtcp_port = port + 1;
+
+    p = strchr(uri, '?');
+    if (p) {
+        if (av_find_info_tag(buf, sizeof(buf), "rtcpport", p)) {
+            rtcp_port = strtol(buf, NULL, 10);
+        }
+    }
 
     ff_url_join(buf, sizeof(buf), "udp", NULL, hostname, port, "%s", path);
     ff_udp_set_remote_url(s->rtp_hd, buf);
 
-    ff_url_join(buf, sizeof(buf), "udp", NULL, hostname, port + 1, "%s", path);
+    ff_url_join(buf, sizeof(buf), "udp", NULL, hostname, rtcp_port, "%s", path);
     ff_udp_set_remote_url(s->rtcp_hd, buf);
     return 0;
 }