diff --git a/doc/protocols.texi b/doc/protocols.texi index a17d66362a..83c238f346 100644 --- a/doc/protocols.texi +++ b/doc/protocols.texi @@ -433,9 +433,9 @@ set the time to live value (for multicast only) @item connect=@var{1|0} Initialize the UDP socket with @code{connect()}. In this case, the -destination address can't be changed with udp_set_remote_url later. +destination address can't be changed with ff_udp_set_remote_url later. If the destination address isn't known at the start, this option can -be specified in udp_set_remote_url, too. +be specified in ff_udp_set_remote_url, too. This allows finding out the source address for the packets with getsockname, and makes writes return with AVERROR(ECONNREFUSED) if "destination unreachable" is received. diff --git a/libavformat/avio.h b/libavformat/avio.h index d11c3984f8..07a893e312 100644 --- a/libavformat/avio.h +++ b/libavformat/avio.h @@ -448,6 +448,9 @@ attribute_deprecated void put_flush_packet(AVIOContext *s); */ attribute_deprecated int url_feof(AVIOContext *s); attribute_deprecated int url_ferror(AVIOContext *s); + +attribute_deprecated int udp_set_remote_url(URLContext *h, const char *uri); +attribute_deprecated int udp_get_local_port(URLContext *h); #endif AVIOContext *avio_alloc_context( @@ -675,9 +678,6 @@ void init_checksum(AVIOContext *s, unsigned long (*update_checksum)(unsigned long c, const uint8_t *p, unsigned int len), unsigned long checksum); -/* udp.c */ -int udp_set_remote_url(URLContext *h, const char *uri); -int udp_get_local_port(URLContext *h); #if FF_API_UDP_GET_FILE int udp_get_file_handle(URLContext *h); #endif diff --git a/libavformat/avio_internal.h b/libavformat/avio_internal.h index 406101618e..6eee947383 100644 --- a/libavformat/avio_internal.h +++ b/libavformat/avio_internal.h @@ -70,5 +70,9 @@ int ffio_read_pause(AVIOContext *h, int pause); int64_t ffio_read_seek (AVIOContext *h, int stream_index, int64_t timestamp, int flags); +/* udp.c */ +int ff_udp_set_remote_url(URLContext *h, const char *uri); +int ff_udp_get_local_port(URLContext *h); + #endif // AVFORMAT_AVIO_INTERNAL_H diff --git a/libavformat/rtpproto.c b/libavformat/rtpproto.c index 7b86c2f8bb..6b537c88ec 100644 --- a/libavformat/rtpproto.c +++ b/libavformat/rtpproto.c @@ -27,6 +27,7 @@ #include "libavutil/parseutils.h" #include "libavutil/avstring.h" #include "avformat.h" +#include "avio_internal.h" #include "rtpdec.h" #include @@ -71,10 +72,10 @@ int rtp_set_remote_url(URLContext *h, const char *uri) path, sizeof(path), uri); ff_url_join(buf, sizeof(buf), "udp", NULL, hostname, port, "%s", path); - udp_set_remote_url(s->rtp_hd, buf); + ff_udp_set_remote_url(s->rtp_hd, buf); ff_url_join(buf, sizeof(buf), "udp", NULL, hostname, port + 1, "%s", path); - udp_set_remote_url(s->rtcp_hd, buf); + ff_udp_set_remote_url(s->rtcp_hd, buf); return 0; } @@ -191,7 +192,7 @@ static int rtp_open(URLContext *h, const char *uri, int flags) if (url_open(&s->rtp_hd, buf, flags) < 0) goto fail; if (local_rtp_port>=0 && local_rtcp_port<0) - local_rtcp_port = udp_get_local_port(s->rtp_hd) + 1; + local_rtcp_port = ff_udp_get_local_port(s->rtp_hd) + 1; build_udp_url(buf, sizeof(buf), hostname, rtcp_port, local_rtcp_port, ttl, max_packet_size, @@ -326,7 +327,7 @@ static int rtp_close(URLContext *h) int rtp_get_local_rtp_port(URLContext *h) { RTPContext *s = h->priv_data; - return udp_get_local_port(s->rtp_hd); + return ff_udp_get_local_port(s->rtp_hd); } /** @@ -338,7 +339,7 @@ int rtp_get_local_rtp_port(URLContext *h) int rtp_get_local_rtcp_port(URLContext *h) { RTPContext *s = h->priv_data; - return udp_get_local_port(s->rtcp_hd); + return ff_udp_get_local_port(s->rtcp_hd); } static int rtp_get_file_handle(URLContext *h) diff --git a/libavformat/udp.c b/libavformat/udp.c index 660229810d..8d50218f19 100644 --- a/libavformat/udp.c +++ b/libavformat/udp.c @@ -27,6 +27,7 @@ #define _BSD_SOURCE /* Needed for using struct ip_mreq with recent glibc */ #define _DARWIN_C_SOURCE /* Needed for using IP_MULTICAST_TTL on OS X */ #include "avformat.h" +#include "avio_internal.h" #include "libavutil/parseutils.h" #include #include "internal.h" @@ -243,7 +244,7 @@ static int udp_port(struct sockaddr_storage *addr, int addr_len) * @param uri of the remote server * @return zero if no error. */ -int udp_set_remote_url(URLContext *h, const char *uri) +int ff_udp_set_remote_url(URLContext *h, const char *uri) { UDPContext *s = h->priv_data; char hostname[256], buf[10]; @@ -282,7 +283,7 @@ int udp_set_remote_url(URLContext *h, const char *uri) * @param h media file context * @return the local port number */ -int udp_get_local_port(URLContext *h) +int ff_udp_get_local_port(URLContext *h) { UDPContext *s = h->priv_data; return s->local_port; @@ -365,7 +366,7 @@ static int udp_open(URLContext *h, const char *uri, int flags) if (flags & URL_WRONLY) goto fail; } else { - if (udp_set_remote_url(h, uri) < 0) + if (ff_udp_set_remote_url(h, uri) < 0) goto fail; }