| @@ -433,9 +433,9 @@ set the time to live value (for multicast only) | |||||
| @item connect=@var{1|0} | @item connect=@var{1|0} | ||||
| Initialize the UDP socket with @code{connect()}. In this case, the | 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 | 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, | This allows finding out the source address for the packets with getsockname, | ||||
| and makes writes return with AVERROR(ECONNREFUSED) if "destination | and makes writes return with AVERROR(ECONNREFUSED) if "destination | ||||
| unreachable" is received. | unreachable" is received. | ||||
| @@ -448,6 +448,9 @@ attribute_deprecated void put_flush_packet(AVIOContext *s); | |||||
| */ | */ | ||||
| attribute_deprecated int url_feof(AVIOContext *s); | attribute_deprecated int url_feof(AVIOContext *s); | ||||
| attribute_deprecated int url_ferror(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 | #endif | ||||
| AVIOContext *avio_alloc_context( | 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 (*update_checksum)(unsigned long c, const uint8_t *p, unsigned int len), | ||||
| unsigned long checksum); | 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 | #if FF_API_UDP_GET_FILE | ||||
| int udp_get_file_handle(URLContext *h); | int udp_get_file_handle(URLContext *h); | ||||
| #endif | #endif | ||||
| @@ -70,5 +70,9 @@ int ffio_read_pause(AVIOContext *h, int pause); | |||||
| int64_t ffio_read_seek (AVIOContext *h, int stream_index, | int64_t ffio_read_seek (AVIOContext *h, int stream_index, | ||||
| int64_t timestamp, int flags); | 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 | #endif // AVFORMAT_AVIO_INTERNAL_H | ||||
| @@ -27,6 +27,7 @@ | |||||
| #include "libavutil/parseutils.h" | #include "libavutil/parseutils.h" | ||||
| #include "libavutil/avstring.h" | #include "libavutil/avstring.h" | ||||
| #include "avformat.h" | #include "avformat.h" | ||||
| #include "avio_internal.h" | |||||
| #include "rtpdec.h" | #include "rtpdec.h" | ||||
| #include <unistd.h> | #include <unistd.h> | ||||
| @@ -71,10 +72,10 @@ int rtp_set_remote_url(URLContext *h, const char *uri) | |||||
| path, sizeof(path), uri); | path, sizeof(path), uri); | ||||
| ff_url_join(buf, sizeof(buf), "udp", NULL, hostname, port, "%s", path); | 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); | 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; | 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) | if (url_open(&s->rtp_hd, buf, flags) < 0) | ||||
| goto fail; | goto fail; | ||||
| if (local_rtp_port>=0 && local_rtcp_port<0) | 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), | build_udp_url(buf, sizeof(buf), | ||||
| hostname, rtcp_port, local_rtcp_port, ttl, max_packet_size, | 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) | int rtp_get_local_rtp_port(URLContext *h) | ||||
| { | { | ||||
| RTPContext *s = h->priv_data; | 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) | int rtp_get_local_rtcp_port(URLContext *h) | ||||
| { | { | ||||
| RTPContext *s = h->priv_data; | 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) | static int rtp_get_file_handle(URLContext *h) | ||||
| @@ -27,6 +27,7 @@ | |||||
| #define _BSD_SOURCE /* Needed for using struct ip_mreq with recent glibc */ | #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 */ | #define _DARWIN_C_SOURCE /* Needed for using IP_MULTICAST_TTL on OS X */ | ||||
| #include "avformat.h" | #include "avformat.h" | ||||
| #include "avio_internal.h" | |||||
| #include "libavutil/parseutils.h" | #include "libavutil/parseutils.h" | ||||
| #include <unistd.h> | #include <unistd.h> | ||||
| #include "internal.h" | #include "internal.h" | ||||
| @@ -243,7 +244,7 @@ static int udp_port(struct sockaddr_storage *addr, int addr_len) | |||||
| * @param uri of the remote server | * @param uri of the remote server | ||||
| * @return zero if no error. | * @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; | UDPContext *s = h->priv_data; | ||||
| char hostname[256], buf[10]; | char hostname[256], buf[10]; | ||||
| @@ -282,7 +283,7 @@ int udp_set_remote_url(URLContext *h, const char *uri) | |||||
| * @param h media file context | * @param h media file context | ||||
| * @return the local port number | * @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; | UDPContext *s = h->priv_data; | ||||
| return s->local_port; | return s->local_port; | ||||
| @@ -365,7 +366,7 @@ static int udp_open(URLContext *h, const char *uri, int flags) | |||||
| if (flags & URL_WRONLY) | if (flags & URL_WRONLY) | ||||
| goto fail; | goto fail; | ||||
| } else { | } else { | ||||
| if (udp_set_remote_url(h, uri) < 0) | |||||
| if (ff_udp_set_remote_url(h, uri) < 0) | |||||
| goto fail; | goto fail; | ||||
| } | } | ||||