summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Storsjö <martin@martin.st>2013-07-31 11:48:28 +0300
committerMartin Storsjö <martin@martin.st>2013-08-01 10:26:17 +0300
commitee37d5811caa8f4ad125a37fe6ce3f9e66cd72f2 (patch)
tree85f1cb21259b249a4a6a3716a5cebae1ea8bc907
parent1851e1d05d06f6ef3436c667e4354da0f407b226 (diff)
rtpproto: Allow specifying a separate rtcp port in ff_rtp_set_remote_url
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>
-rw-r--r--libavformat/rtpproto.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/libavformat/rtpproto.c b/libavformat/rtpproto.c
index b21c1219c8..974aa351a5 100644
--- a/libavformat/rtpproto.c
+++ b/libavformat/rtpproto.c
@@ -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;
}