Commit 4ec153bb authored by Anton Khirnov's avatar Anton Khirnov

avio: make udp_set_remote_url/get_local_port internal.

parent 4377fafd
...@@ -433,9 +433,9 @@ set the time to live value (for multicast only) ...@@ -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); ...@@ -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, ...@@ -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); ...@@ -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 @@ ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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 @@ ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment