avio: make udp_set_remote_url/get_local_port internal.
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user