[FFmpeg-cvslog] r24925 - in trunk/libavformat: rtsp.c rtsp.h
mstorsjo
subversion
Wed Aug 25 17:32:29 CEST 2010
Author: mstorsjo
Date: Wed Aug 25 17:32:29 2010
New Revision: 24925
Log:
Handle IPv6 in the RTSP code
Modified:
trunk/libavformat/rtsp.c
trunk/libavformat/rtsp.h
Modified: trunk/libavformat/rtsp.c
==============================================================================
--- trunk/libavformat/rtsp.c Wed Aug 25 17:32:00 2010 (r24924)
+++ trunk/libavformat/rtsp.c Wed Aug 25 17:32:29 2010 (r24925)
@@ -696,13 +696,10 @@ static void rtsp_parse_transport(RTSPMes
th->ttl = strtol(p, (char **)&p, 10);
}
} else if (!strcmp(parameter, "destination")) {
- struct in_addr ipaddr;
-
if (*p == '=') {
p++;
get_word_sep(buf, sizeof(buf), ";,", &p);
- if (ff_inet_aton(buf, &ipaddr))
- th->destination = ntohl(ipaddr.s_addr);
+ get_sockaddr(buf, &th->destination);
}
}
while (*p != ';' && *p != '\0' && *p != ',')
@@ -1174,20 +1171,22 @@ static int make_setup_request(AVFormatCo
break;
}
case RTSP_LOWER_TRANSPORT_UDP_MULTICAST: {
- char url[1024];
- struct in_addr in;
+ char url[1024], namebuf[50];
+ struct sockaddr_storage addr;
int port, ttl;
- if (reply->transports[0].destination) {
- in.s_addr = htonl(reply->transports[0].destination);
+ if (reply->transports[0].destination.ss_family) {
+ addr = reply->transports[0].destination;
port = reply->transports[0].port_min;
ttl = reply->transports[0].ttl;
} else {
- in = ((struct sockaddr_in*)&rtsp_st->sdp_ip)->sin_addr;
+ addr = rtsp_st->sdp_ip;
port = rtsp_st->sdp_port;
ttl = rtsp_st->sdp_ttl;
}
- ff_url_join(url, sizeof(url), "rtp", NULL, inet_ntoa(in),
+ getnameinfo((struct sockaddr*) &addr, sizeof(addr),
+ namebuf, sizeof(namebuf), NULL, 0, NI_NUMERICHOST);
+ ff_url_join(url, sizeof(url), "rtp", NULL, namebuf,
port, "?ttl=%d", ttl);
if (url_open(&rtsp_st->rtp_handle, url, URL_RDWR) < 0) {
err = AVERROR_INVALIDDATA;
Modified: trunk/libavformat/rtsp.h
==============================================================================
--- trunk/libavformat/rtsp.h Wed Aug 25 17:32:00 2010 (r24924)
+++ trunk/libavformat/rtsp.h Wed Aug 25 17:32:29 2010 (r24925)
@@ -96,7 +96,7 @@ typedef struct RTSPTransportField {
* packets will be allowed to make before being discarded. */
int ttl;
- uint32_t destination; /**< destination IP address */
+ struct sockaddr_storage destination; /**< destination IP address */
/** data/packet transport protocol; e.g. RTP or RDT */
enum RTSPTransport transport;
More information about the ffmpeg-cvslog
mailing list