mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
Make ff_url_split() public
ff_url_split() is retained as an alias, as it was used by ffserver, to avoid breaking ABI compatibility with it. Originally committed as revision 23822 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
350120d269
commit
f3bfe388b5
@ -2978,7 +2978,7 @@ static void rtsp_cmd_describe(HTTPContext *c, const char *url)
|
|||||||
struct sockaddr_in my_addr;
|
struct sockaddr_in my_addr;
|
||||||
|
|
||||||
/* find which url is asked */
|
/* find which url is asked */
|
||||||
ff_url_split(NULL, 0, NULL, 0, NULL, 0, NULL, path1, sizeof(path1), url);
|
av_url_split(NULL, 0, NULL, 0, NULL, 0, NULL, path1, sizeof(path1), url);
|
||||||
path = path1;
|
path = path1;
|
||||||
if (*path == '/')
|
if (*path == '/')
|
||||||
path++;
|
path++;
|
||||||
@ -3055,7 +3055,7 @@ static void rtsp_cmd_setup(HTTPContext *c, const char *url,
|
|||||||
RTSPActionServerSetup setup;
|
RTSPActionServerSetup setup;
|
||||||
|
|
||||||
/* find which url is asked */
|
/* find which url is asked */
|
||||||
ff_url_split(NULL, 0, NULL, 0, NULL, 0, NULL, path1, sizeof(path1), url);
|
av_url_split(NULL, 0, NULL, 0, NULL, 0, NULL, path1, sizeof(path1), url);
|
||||||
path = path1;
|
path = path1;
|
||||||
if (*path == '/')
|
if (*path == '/')
|
||||||
path++;
|
path++;
|
||||||
@ -3198,7 +3198,7 @@ static HTTPContext *find_rtp_session_with_url(const char *url,
|
|||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
/* find which url is asked */
|
/* find which url is asked */
|
||||||
ff_url_split(NULL, 0, NULL, 0, NULL, 0, NULL, path1, sizeof(path1), url);
|
av_url_split(NULL, 0, NULL, 0, NULL, 0, NULL, path1, sizeof(path1), url);
|
||||||
path = path1;
|
path = path1;
|
||||||
if (*path == '/')
|
if (*path == '/')
|
||||||
path++;
|
path++;
|
||||||
|
@ -1184,6 +1184,32 @@ int64_t av_gen_search(AVFormatContext *s, int stream_index,
|
|||||||
/** media file output */
|
/** media file output */
|
||||||
int av_set_parameters(AVFormatContext *s, AVFormatParameters *ap);
|
int av_set_parameters(AVFormatContext *s, AVFormatParameters *ap);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Split a URL string into components.
|
||||||
|
*
|
||||||
|
* The pointers to buffers for storing individual components may be null,
|
||||||
|
* in order to ignore that component. Buffers for components not found are
|
||||||
|
* set to empty strings. If the port is not found, it is set to a negative
|
||||||
|
* value.
|
||||||
|
*
|
||||||
|
* @param proto the buffer for the protocol
|
||||||
|
* @param proto_size the size of the proto buffer
|
||||||
|
* @param authorization the buffer for the authorization
|
||||||
|
* @param authorization_size the size of the authorization buffer
|
||||||
|
* @param hostname the buffer for the host name
|
||||||
|
* @param hostname_size the size of the hostname buffer
|
||||||
|
* @param port_ptr a pointer to store the port number in
|
||||||
|
* @param path the buffer for the path
|
||||||
|
* @param path_size the size of the path buffer
|
||||||
|
* @param url the URL to split
|
||||||
|
*/
|
||||||
|
void av_url_split(char *proto, int proto_size,
|
||||||
|
char *authorization, int authorization_size,
|
||||||
|
char *hostname, int hostname_size,
|
||||||
|
int *port_ptr,
|
||||||
|
char *path, int path_size,
|
||||||
|
const char *url);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Allocates the stream private data and writes the stream header to an
|
* Allocates the stream private data and writes the stream header to an
|
||||||
* output media file.
|
* output media file.
|
||||||
|
@ -90,7 +90,7 @@ static int gopher_open(URLContext *h, const char *uri, int flags)
|
|||||||
h->priv_data = s;
|
h->priv_data = s;
|
||||||
|
|
||||||
/* needed in any case to build the host string */
|
/* needed in any case to build the host string */
|
||||||
ff_url_split(NULL, 0, auth, sizeof(auth), hostname, sizeof(hostname), &port,
|
av_url_split(NULL, 0, auth, sizeof(auth), hostname, sizeof(hostname), &port,
|
||||||
path, sizeof(path), uri);
|
path, sizeof(path), uri);
|
||||||
|
|
||||||
if (port < 0)
|
if (port < 0)
|
||||||
|
@ -105,12 +105,12 @@ static int http_open_cnx(URLContext *h)
|
|||||||
/* fill the dest addr */
|
/* fill the dest addr */
|
||||||
redo:
|
redo:
|
||||||
/* needed in any case to build the host string */
|
/* needed in any case to build the host string */
|
||||||
ff_url_split(NULL, 0, auth, sizeof(auth), hostname, sizeof(hostname), &port,
|
av_url_split(NULL, 0, auth, sizeof(auth), hostname, sizeof(hostname), &port,
|
||||||
path1, sizeof(path1), s->location);
|
path1, sizeof(path1), s->location);
|
||||||
ff_url_join(hoststr, sizeof(hoststr), NULL, NULL, hostname, port, NULL);
|
ff_url_join(hoststr, sizeof(hoststr), NULL, NULL, hostname, port, NULL);
|
||||||
|
|
||||||
if (use_proxy) {
|
if (use_proxy) {
|
||||||
ff_url_split(NULL, 0, auth, sizeof(auth), hostname, sizeof(hostname), &port,
|
av_url_split(NULL, 0, auth, sizeof(auth), hostname, sizeof(hostname), &port,
|
||||||
NULL, 0, proxy_path);
|
NULL, 0, proxy_path);
|
||||||
path = s->location;
|
path = s->location;
|
||||||
} else {
|
} else {
|
||||||
|
@ -89,27 +89,9 @@ int ff_probe_input_buffer(ByteIOContext **pb, AVInputFormat **fmt,
|
|||||||
const char *filename, void *logctx,
|
const char *filename, void *logctx,
|
||||||
unsigned int offset, unsigned int max_probe_size);
|
unsigned int offset, unsigned int max_probe_size);
|
||||||
|
|
||||||
|
#if LIBAVFORMAT_VERSION_MAJOR < 53
|
||||||
/**
|
/**
|
||||||
* Splits a URL string into components. To reassemble components back into
|
* @deprecated use av_url_split() instead
|
||||||
* a URL, use ff_url_join instead of using snprintf directly.
|
|
||||||
*
|
|
||||||
* The pointers to buffers for storing individual components may be null,
|
|
||||||
* in order to ignore that component. Buffers for components not found are
|
|
||||||
* set to empty strings. If the port isn't found, it is set to a negative
|
|
||||||
* value.
|
|
||||||
*
|
|
||||||
* @see ff_url_join
|
|
||||||
*
|
|
||||||
* @param proto the buffer for the protocol
|
|
||||||
* @param proto_size the size of the proto buffer
|
|
||||||
* @param authorization the buffer for the authorization
|
|
||||||
* @param authorization_size the size of the authorization buffer
|
|
||||||
* @param hostname the buffer for the host name
|
|
||||||
* @param hostname_size the size of the hostname buffer
|
|
||||||
* @param port_ptr a pointer to store the port number in
|
|
||||||
* @param path the buffer for the path
|
|
||||||
* @param path_size the size of the path buffer
|
|
||||||
* @param url the URL to split
|
|
||||||
*/
|
*/
|
||||||
void ff_url_split(char *proto, int proto_size,
|
void ff_url_split(char *proto, int proto_size,
|
||||||
char *authorization, int authorization_size,
|
char *authorization, int authorization_size,
|
||||||
@ -117,15 +99,16 @@ void ff_url_split(char *proto, int proto_size,
|
|||||||
int *port_ptr,
|
int *port_ptr,
|
||||||
char *path, int path_size,
|
char *path, int path_size,
|
||||||
const char *url);
|
const char *url);
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Assembles a URL string from components. This is the reverse operation
|
* Assembles a URL string from components. This is the reverse operation
|
||||||
* of ff_url_split.
|
* of av_url_split.
|
||||||
*
|
*
|
||||||
* Note, this requires networking to be initialized, so the caller must
|
* Note, this requires networking to be initialized, so the caller must
|
||||||
* ensure ff_network_init has been called.
|
* ensure ff_network_init has been called.
|
||||||
*
|
*
|
||||||
* @see ff_url_split
|
* @see av_url_split
|
||||||
*
|
*
|
||||||
* @param str the buffer to fill with the url
|
* @param str the buffer to fill with the url
|
||||||
* @param size the size of the str buffer
|
* @param size the size of the str buffer
|
||||||
|
@ -581,7 +581,7 @@ static int mms_open(URLContext *h, const char *uri, int flags)
|
|||||||
return AVERROR(ENOMEM);
|
return AVERROR(ENOMEM);
|
||||||
|
|
||||||
// only for MMS over TCP, so set proto = NULL
|
// only for MMS over TCP, so set proto = NULL
|
||||||
ff_url_split(NULL, 0, NULL, 0,
|
av_url_split(NULL, 0, NULL, 0,
|
||||||
mms->host, sizeof(mms->host), &port, mms->path,
|
mms->host, sizeof(mms->host), &port, mms->path,
|
||||||
sizeof(mms->path), uri);
|
sizeof(mms->path), uri);
|
||||||
|
|
||||||
|
@ -813,7 +813,7 @@ static int rtmp_open(URLContext *s, const char *uri, int flags)
|
|||||||
s->priv_data = rt;
|
s->priv_data = rt;
|
||||||
rt->is_input = !(flags & URL_WRONLY);
|
rt->is_input = !(flags & URL_WRONLY);
|
||||||
|
|
||||||
ff_url_split(proto, sizeof(proto), NULL, 0, hostname, sizeof(hostname), &port,
|
av_url_split(proto, sizeof(proto), NULL, 0, hostname, sizeof(hostname), &port,
|
||||||
path, sizeof(path), s->filename);
|
path, sizeof(path), s->filename);
|
||||||
|
|
||||||
if (port < 0)
|
if (port < 0)
|
||||||
|
@ -66,7 +66,7 @@ int rtp_set_remote_url(URLContext *h, const char *uri)
|
|||||||
char buf[1024];
|
char buf[1024];
|
||||||
char path[1024];
|
char path[1024];
|
||||||
|
|
||||||
ff_url_split(NULL, 0, NULL, 0, hostname, sizeof(hostname), &port,
|
av_url_split(NULL, 0, NULL, 0, hostname, sizeof(hostname), &port,
|
||||||
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);
|
||||||
@ -146,7 +146,7 @@ static int rtp_open(URLContext *h, const char *uri, int flags)
|
|||||||
return AVERROR(ENOMEM);
|
return AVERROR(ENOMEM);
|
||||||
h->priv_data = s;
|
h->priv_data = s;
|
||||||
|
|
||||||
ff_url_split(NULL, 0, NULL, 0, hostname, sizeof(hostname), &rtp_port,
|
av_url_split(NULL, 0, NULL, 0, hostname, sizeof(hostname), &rtp_port,
|
||||||
path, sizeof(path), uri);
|
path, sizeof(path), uri);
|
||||||
/* extract parameters */
|
/* extract parameters */
|
||||||
ttl = -1;
|
ttl = -1;
|
||||||
|
@ -327,7 +327,7 @@ static void sdp_parse_line(AVFormatContext *s, SDPParseState *s1,
|
|||||||
rtsp_st = st->priv_data;
|
rtsp_st = st->priv_data;
|
||||||
|
|
||||||
/* XXX: may need to add full url resolution */
|
/* XXX: may need to add full url resolution */
|
||||||
ff_url_split(proto, sizeof(proto), NULL, 0, NULL, 0,
|
av_url_split(proto, sizeof(proto), NULL, 0, NULL, 0,
|
||||||
NULL, NULL, 0, p);
|
NULL, NULL, 0, p);
|
||||||
if (proto[0] == '\0') {
|
if (proto[0] == '\0') {
|
||||||
/* relative control URL */
|
/* relative control URL */
|
||||||
@ -1366,7 +1366,7 @@ int ff_rtsp_connect(AVFormatContext *s)
|
|||||||
redirect:
|
redirect:
|
||||||
rt->control_transport = RTSP_MODE_PLAIN;
|
rt->control_transport = RTSP_MODE_PLAIN;
|
||||||
/* extract hostname and port */
|
/* extract hostname and port */
|
||||||
ff_url_split(NULL, 0, auth, sizeof(auth),
|
av_url_split(NULL, 0, auth, sizeof(auth),
|
||||||
host, sizeof(host), &port, path, sizeof(path), s->filename);
|
host, sizeof(host), &port, path, sizeof(path), s->filename);
|
||||||
if (*auth) {
|
if (*auth) {
|
||||||
av_strlcpy(rt->auth, auth, sizeof(rt->auth));
|
av_strlcpy(rt->auth, auth, sizeof(rt->auth));
|
||||||
|
@ -109,7 +109,7 @@ static int sdp_get_address(char *dest_addr, int size, int *ttl, const char *url)
|
|||||||
const char *p;
|
const char *p;
|
||||||
char proto[32];
|
char proto[32];
|
||||||
|
|
||||||
ff_url_split(proto, sizeof(proto), NULL, 0, dest_addr, size, &port, NULL, 0, url);
|
av_url_split(proto, sizeof(proto), NULL, 0, dest_addr, size, &port, NULL, 0, url);
|
||||||
|
|
||||||
*ttl = 0;
|
*ttl = 0;
|
||||||
|
|
||||||
|
@ -45,7 +45,7 @@ static int tcp_open(URLContext *h, const char *uri, int flags)
|
|||||||
char hostname[1024],proto[1024],path[1024];
|
char hostname[1024],proto[1024],path[1024];
|
||||||
char portstr[10];
|
char portstr[10];
|
||||||
|
|
||||||
ff_url_split(proto, sizeof(proto), NULL, 0, hostname, sizeof(hostname),
|
av_url_split(proto, sizeof(proto), NULL, 0, hostname, sizeof(hostname),
|
||||||
&port, path, sizeof(path), uri);
|
&port, path, sizeof(path), uri);
|
||||||
if (strcmp(proto,"tcp") || port <= 0 || port >= 65536)
|
if (strcmp(proto,"tcp") || port <= 0 || port >= 65536)
|
||||||
return AVERROR(EINVAL);
|
return AVERROR(EINVAL);
|
||||||
|
@ -266,7 +266,7 @@ int udp_set_remote_url(URLContext *h, const char *uri)
|
|||||||
char hostname[256];
|
char hostname[256];
|
||||||
int port;
|
int port;
|
||||||
|
|
||||||
ff_url_split(NULL, 0, NULL, 0, hostname, sizeof(hostname), &port, NULL, 0, uri);
|
av_url_split(NULL, 0, NULL, 0, hostname, sizeof(hostname), &port, NULL, 0, uri);
|
||||||
|
|
||||||
/* set the destination address */
|
/* set the destination address */
|
||||||
s->dest_addr_len = udp_set_url(&s->dest_addr, hostname, port);
|
s->dest_addr_len = udp_set_url(&s->dest_addr, hostname, port);
|
||||||
@ -347,9 +347,9 @@ static int udp_open(URLContext *h, const char *uri, int flags)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* fill the dest addr */
|
/* fill the dest addr */
|
||||||
ff_url_split(NULL, 0, NULL, 0, hostname, sizeof(hostname), &port, NULL, 0, uri);
|
av_url_split(NULL, 0, NULL, 0, hostname, sizeof(hostname), &port, NULL, 0, uri);
|
||||||
|
|
||||||
/* XXX: fix ff_url_split */
|
/* XXX: fix av_url_split */
|
||||||
if (hostname[0] == '\0' || hostname[0] == '?') {
|
if (hostname[0] == '\0' || hostname[0] == '?') {
|
||||||
/* only accepts null hostname if input */
|
/* only accepts null hostname if input */
|
||||||
if (flags & URL_WRONLY)
|
if (flags & URL_WRONLY)
|
||||||
|
@ -3493,12 +3493,30 @@ void av_pkt_dump_log(void *avcl, int level, AVPacket *pkt, int dump_payload)
|
|||||||
pkt_dump_internal(avcl, NULL, level, pkt, dump_payload);
|
pkt_dump_internal(avcl, NULL, level, pkt, dump_payload);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if LIBAVFORMAT_VERSION_MAJOR < 53
|
||||||
|
attribute_deprecated
|
||||||
void ff_url_split(char *proto, int proto_size,
|
void ff_url_split(char *proto, int proto_size,
|
||||||
char *authorization, int authorization_size,
|
char *authorization, int authorization_size,
|
||||||
char *hostname, int hostname_size,
|
char *hostname, int hostname_size,
|
||||||
int *port_ptr,
|
int *port_ptr,
|
||||||
char *path, int path_size,
|
char *path, int path_size,
|
||||||
const char *url)
|
const char *url)
|
||||||
|
{
|
||||||
|
av_url_split(proto, proto_size,
|
||||||
|
authorization, authorization_size,
|
||||||
|
hostname, hostname_size,
|
||||||
|
port_ptr,
|
||||||
|
path, path_size,
|
||||||
|
url);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void av_url_split(char *proto, int proto_size,
|
||||||
|
char *authorization, int authorization_size,
|
||||||
|
char *hostname, int hostname_size,
|
||||||
|
int *port_ptr,
|
||||||
|
char *path, int path_size,
|
||||||
|
const char *url)
|
||||||
{
|
{
|
||||||
const char *p, *ls, *at, *col, *brk;
|
const char *p, *ls, *at, *col, *brk;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user