mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-28 02:12:28 +00:00
Move find_info_tag to lavu and add av_ prefix to it
Signed-off-by: Janne Grunau <janne-ffmpeg@jannau.net>
(cherry picked from commit ab0287fcbd
)
This commit is contained in:
parent
9c9912b995
commit
1b98107c8d
@ -2135,10 +2135,10 @@ static int open_input_stream(HTTPContext *c, const char *info)
|
||||
strcpy(input_filename, c->stream->feed->feed_filename);
|
||||
buf_size = FFM_PACKET_SIZE;
|
||||
/* compute position (absolute time) */
|
||||
if (find_info_tag(buf, sizeof(buf), "date", info)) {
|
||||
if (av_find_info_tag(buf, sizeof(buf), "date", info)) {
|
||||
if ((ret = av_parse_time(&stream_pos, buf, 0)) < 0)
|
||||
return ret;
|
||||
} else if (find_info_tag(buf, sizeof(buf), "buffer", info)) {
|
||||
} else if (av_find_info_tag(buf, sizeof(buf), "buffer", info)) {
|
||||
int prebuffer = strtol(buf, 0, 10);
|
||||
stream_pos = av_gettime() - prebuffer * (int64_t)1000000;
|
||||
} else
|
||||
@ -2147,7 +2147,7 @@ static int open_input_stream(HTTPContext *c, const char *info)
|
||||
strcpy(input_filename, c->stream->feed_filename);
|
||||
buf_size = 0;
|
||||
/* compute position (relative time) */
|
||||
if (find_info_tag(buf, sizeof(buf), "date", info)) {
|
||||
if (av_find_info_tag(buf, sizeof(buf), "date", info)) {
|
||||
if ((ret = av_parse_time(&stream_pos, buf, 1)) < 0)
|
||||
return ret;
|
||||
} else
|
||||
|
@ -1501,13 +1501,12 @@ int64_t ffm_read_write_index(int fd);
|
||||
int ffm_write_write_index(int fd, int64_t pos);
|
||||
void ffm_set_write_index(AVFormatContext *s, int64_t pos, int64_t file_size);
|
||||
|
||||
#if FF_API_FIND_INFO_TAG
|
||||
/**
|
||||
* Attempt to find a specific tag in a URL.
|
||||
*
|
||||
* syntax: '?tag1=val1&tag2=val2...'. Little URL decoding is done.
|
||||
* Return 1 if found.
|
||||
* @deprecated use av_find_info_tag in libavutil instead.
|
||||
*/
|
||||
int find_info_tag(char *arg, int arg_size, const char *tag1, const char *info);
|
||||
attribute_deprecated int find_info_tag(char *arg, int arg_size, const char *tag1, const char *info);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Return in 'buf' the path with '%d' replaced by a number.
|
||||
|
@ -24,6 +24,7 @@
|
||||
* RTP protocol
|
||||
*/
|
||||
|
||||
#include "libavutil/parseutils.h"
|
||||
#include "libavutil/avstring.h"
|
||||
#include "avformat.h"
|
||||
#include "rtpdec.h"
|
||||
@ -161,25 +162,25 @@ static int rtp_open(URLContext *h, const char *uri, int flags)
|
||||
|
||||
p = strchr(uri, '?');
|
||||
if (p) {
|
||||
if (find_info_tag(buf, sizeof(buf), "ttl", p)) {
|
||||
if (av_find_info_tag(buf, sizeof(buf), "ttl", p)) {
|
||||
ttl = strtol(buf, NULL, 10);
|
||||
}
|
||||
if (find_info_tag(buf, sizeof(buf), "rtcpport", p)) {
|
||||
if (av_find_info_tag(buf, sizeof(buf), "rtcpport", p)) {
|
||||
rtcp_port = strtol(buf, NULL, 10);
|
||||
}
|
||||
if (find_info_tag(buf, sizeof(buf), "localport", p)) {
|
||||
if (av_find_info_tag(buf, sizeof(buf), "localport", p)) {
|
||||
local_rtp_port = strtol(buf, NULL, 10);
|
||||
}
|
||||
if (find_info_tag(buf, sizeof(buf), "localrtpport", p)) {
|
||||
if (av_find_info_tag(buf, sizeof(buf), "localrtpport", p)) {
|
||||
local_rtp_port = strtol(buf, NULL, 10);
|
||||
}
|
||||
if (find_info_tag(buf, sizeof(buf), "localrtcpport", p)) {
|
||||
if (av_find_info_tag(buf, sizeof(buf), "localrtcpport", p)) {
|
||||
local_rtcp_port = strtol(buf, NULL, 10);
|
||||
}
|
||||
if (find_info_tag(buf, sizeof(buf), "pkt_size", p)) {
|
||||
if (av_find_info_tag(buf, sizeof(buf), "pkt_size", p)) {
|
||||
max_packet_size = strtol(buf, NULL, 10);
|
||||
}
|
||||
if (find_info_tag(buf, sizeof(buf), "connect", p)) {
|
||||
if (av_find_info_tag(buf, sizeof(buf), "connect", p)) {
|
||||
connect = strtol(buf, NULL, 10);
|
||||
}
|
||||
}
|
||||
|
@ -20,6 +20,7 @@
|
||||
*/
|
||||
|
||||
#include "avformat.h"
|
||||
#include "libavutil/parseutils.h"
|
||||
#include "libavutil/random_seed.h"
|
||||
#include "libavutil/avstring.h"
|
||||
#include "libavutil/intreadwrite.h"
|
||||
@ -87,16 +88,16 @@ static int sap_write_header(AVFormatContext *s)
|
||||
option_list = strrchr(path, '?');
|
||||
if (option_list) {
|
||||
char buf[50];
|
||||
if (find_info_tag(buf, sizeof(buf), "announce_port", option_list)) {
|
||||
if (av_find_info_tag(buf, sizeof(buf), "announce_port", option_list)) {
|
||||
port = strtol(buf, NULL, 10);
|
||||
}
|
||||
if (find_info_tag(buf, sizeof(buf), "same_port", option_list)) {
|
||||
if (av_find_info_tag(buf, sizeof(buf), "same_port", option_list)) {
|
||||
same_port = strtol(buf, NULL, 10);
|
||||
}
|
||||
if (find_info_tag(buf, sizeof(buf), "ttl", option_list)) {
|
||||
if (av_find_info_tag(buf, sizeof(buf), "ttl", option_list)) {
|
||||
ttl = strtol(buf, NULL, 10);
|
||||
}
|
||||
if (find_info_tag(buf, sizeof(buf), "announce_addr", option_list)) {
|
||||
if (av_find_info_tag(buf, sizeof(buf), "announce_addr", option_list)) {
|
||||
av_strlcpy(announce_addr, buf, sizeof(announce_addr));
|
||||
}
|
||||
}
|
||||
|
@ -21,6 +21,7 @@
|
||||
#include <string.h>
|
||||
#include "libavutil/avstring.h"
|
||||
#include "libavutil/base64.h"
|
||||
#include "libavutil/parseutils.h"
|
||||
#include "libavcodec/xiph.h"
|
||||
#include "avformat.h"
|
||||
#include "internal.h"
|
||||
@ -136,7 +137,7 @@ static int sdp_get_address(char *dest_addr, int size, int *ttl, const char *url)
|
||||
if (p) {
|
||||
char buff[64];
|
||||
|
||||
if (find_info_tag(buff, sizeof(buff), "ttl", p)) {
|
||||
if (av_find_info_tag(buff, sizeof(buff), "ttl", p)) {
|
||||
*ttl = strtol(buff, NULL, 10);
|
||||
} else {
|
||||
*ttl = 5;
|
||||
|
@ -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 "libavutil/parseutils.h"
|
||||
#include <unistd.h>
|
||||
#include "internal.h"
|
||||
#include "network.h"
|
||||
@ -259,7 +260,7 @@ int udp_set_remote_url(URLContext *h, const char *uri)
|
||||
s->is_multicast = ff_is_multicast_address((struct sockaddr*) &s->dest_addr);
|
||||
p = strchr(uri, '?');
|
||||
if (p) {
|
||||
if (find_info_tag(buf, sizeof(buf), "connect", p)) {
|
||||
if (av_find_info_tag(buf, sizeof(buf), "connect", p)) {
|
||||
int was_connected = s->is_connected;
|
||||
s->is_connected = strtol(buf, NULL, 10);
|
||||
if (s->is_connected && !was_connected) {
|
||||
@ -330,7 +331,7 @@ static int udp_open(URLContext *h, const char *uri, int flags)
|
||||
|
||||
p = strchr(uri, '?');
|
||||
if (p) {
|
||||
if (find_info_tag(buf, sizeof(buf), "reuse", p)) {
|
||||
if (av_find_info_tag(buf, sizeof(buf), "reuse", p)) {
|
||||
const char *endptr=NULL;
|
||||
s->reuse_socket = strtol(buf, &endptr, 10);
|
||||
/* assume if no digits were found it is a request to enable it */
|
||||
@ -338,19 +339,19 @@ static int udp_open(URLContext *h, const char *uri, int flags)
|
||||
s->reuse_socket = 1;
|
||||
reuse_specified = 1;
|
||||
}
|
||||
if (find_info_tag(buf, sizeof(buf), "ttl", p)) {
|
||||
if (av_find_info_tag(buf, sizeof(buf), "ttl", p)) {
|
||||
s->ttl = strtol(buf, NULL, 10);
|
||||
}
|
||||
if (find_info_tag(buf, sizeof(buf), "localport", p)) {
|
||||
if (av_find_info_tag(buf, sizeof(buf), "localport", p)) {
|
||||
s->local_port = strtol(buf, NULL, 10);
|
||||
}
|
||||
if (find_info_tag(buf, sizeof(buf), "pkt_size", p)) {
|
||||
if (av_find_info_tag(buf, sizeof(buf), "pkt_size", p)) {
|
||||
h->max_packet_size = strtol(buf, NULL, 10);
|
||||
}
|
||||
if (find_info_tag(buf, sizeof(buf), "buffer_size", p)) {
|
||||
if (av_find_info_tag(buf, sizeof(buf), "buffer_size", p)) {
|
||||
s->buffer_size = strtol(buf, NULL, 10);
|
||||
}
|
||||
if (find_info_tag(buf, sizeof(buf), "connect", p)) {
|
||||
if (av_find_info_tag(buf, sizeof(buf), "connect", p)) {
|
||||
s->is_connected = strtol(buf, NULL, 10);
|
||||
}
|
||||
}
|
||||
|
@ -3391,44 +3391,14 @@ int64_t parse_date(const char *timestr, int duration)
|
||||
}
|
||||
#endif
|
||||
|
||||
#if FF_API_FIND_INFO_TAG
|
||||
#include "libavutil/parseutils.h"
|
||||
|
||||
int find_info_tag(char *arg, int arg_size, const char *tag1, const char *info)
|
||||
{
|
||||
const char *p;
|
||||
char tag[128], *q;
|
||||
|
||||
p = info;
|
||||
if (*p == '?')
|
||||
p++;
|
||||
for(;;) {
|
||||
q = tag;
|
||||
while (*p != '\0' && *p != '=' && *p != '&') {
|
||||
if ((q - tag) < sizeof(tag) - 1)
|
||||
*q++ = *p;
|
||||
p++;
|
||||
}
|
||||
*q = '\0';
|
||||
q = arg;
|
||||
if (*p == '=') {
|
||||
p++;
|
||||
while (*p != '&' && *p != '\0') {
|
||||
if ((q - arg) < arg_size - 1) {
|
||||
if (*p == '+')
|
||||
*q++ = ' ';
|
||||
else
|
||||
*q++ = *p;
|
||||
}
|
||||
p++;
|
||||
}
|
||||
}
|
||||
*q = '\0';
|
||||
if (!strcmp(tag, tag1))
|
||||
return 1;
|
||||
if (*p != '&')
|
||||
break;
|
||||
p++;
|
||||
}
|
||||
return 0;
|
||||
return av_find_info_tag(arg, arg_size, tag1, info);
|
||||
}
|
||||
#endif
|
||||
|
||||
int av_get_frame_filename(char *buf, int buf_size,
|
||||
const char *path, int number)
|
||||
|
@ -98,5 +98,8 @@
|
||||
#ifndef FF_API_PARSE_DATE
|
||||
#define FF_API_PARSE_DATE (LIBAVFORMAT_VERSION_MAJOR < 54)
|
||||
#endif
|
||||
#ifndef FF_API_FIND_INFO_TAG
|
||||
#define FF_API_FIND_INFO_TAG (LIBAVFORMAT_VERSION_MAJOR < 54)
|
||||
#endif
|
||||
|
||||
#endif //AVFORMAT_VERSION_H
|
||||
|
@ -608,6 +608,45 @@ int av_parse_time(int64_t *timeval, const char *datestr, int duration)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int av_find_info_tag(char *arg, int arg_size, const char *tag1, const char *info)
|
||||
{
|
||||
const char *p;
|
||||
char tag[128], *q;
|
||||
|
||||
p = info;
|
||||
if (*p == '?')
|
||||
p++;
|
||||
for(;;) {
|
||||
q = tag;
|
||||
while (*p != '\0' && *p != '=' && *p != '&') {
|
||||
if ((q - tag) < sizeof(tag) - 1)
|
||||
*q++ = *p;
|
||||
p++;
|
||||
}
|
||||
*q = '\0';
|
||||
q = arg;
|
||||
if (*p == '=') {
|
||||
p++;
|
||||
while (*p != '&' && *p != '\0') {
|
||||
if ((q - arg) < arg_size - 1) {
|
||||
if (*p == '+')
|
||||
*q++ = ' ';
|
||||
else
|
||||
*q++ = *p;
|
||||
}
|
||||
p++;
|
||||
}
|
||||
}
|
||||
*q = '\0';
|
||||
if (!strcmp(tag, tag1))
|
||||
return 1;
|
||||
if (*p != '&')
|
||||
break;
|
||||
p++;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef TEST
|
||||
|
||||
#undef printf
|
||||
|
@ -106,4 +106,12 @@ int av_parse_color(uint8_t *rgba_color, const char *color_string, int slen,
|
||||
*/
|
||||
int av_parse_time(int64_t *timeval, const char *timestr, int duration);
|
||||
|
||||
/**
|
||||
* Attempt to find a specific tag in a URL.
|
||||
*
|
||||
* syntax: '?tag1=val1&tag2=val2...'. Little URL decoding is done.
|
||||
* Return 1 if found.
|
||||
*/
|
||||
int av_find_info_tag(char *arg, int arg_size, const char *tag1, const char *info);
|
||||
|
||||
#endif /* AVUTIL_PARSEUTILS_H */
|
||||
|
Loading…
Reference in New Issue
Block a user