mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-09-19 21:06:42 +00:00
Move av_get_token() from libavfilter to libavutil.
Originally committed as revision 25225 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
4a94cfea02
commit
372e288408
@ -26,7 +26,7 @@
|
|||||||
|
|
||||||
#define LIBAVFILTER_VERSION_MAJOR 1
|
#define LIBAVFILTER_VERSION_MAJOR 1
|
||||||
#define LIBAVFILTER_VERSION_MINOR 46
|
#define LIBAVFILTER_VERSION_MINOR 46
|
||||||
#define LIBAVFILTER_VERSION_MICRO 0
|
#define LIBAVFILTER_VERSION_MICRO 1
|
||||||
|
|
||||||
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
|
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
|
||||||
LIBAVFILTER_VERSION_MINOR, \
|
LIBAVFILTER_VERSION_MINOR, \
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "libavutil/avstring.h"
|
||||||
#include "graphparser.h"
|
#include "graphparser.h"
|
||||||
#include "avfilter.h"
|
#include "avfilter.h"
|
||||||
#include "avfiltergraph.h"
|
#include "avfiltergraph.h"
|
||||||
|
@ -28,42 +28,6 @@
|
|||||||
#include "libavutil/random_seed.h"
|
#include "libavutil/random_seed.h"
|
||||||
#include "parseutils.h"
|
#include "parseutils.h"
|
||||||
|
|
||||||
#define WHITESPACES " \n\t"
|
|
||||||
|
|
||||||
char *av_get_token(const char **buf, const char *term)
|
|
||||||
{
|
|
||||||
char *out = av_malloc(strlen(*buf) + 1);
|
|
||||||
char *ret= out, *end= out;
|
|
||||||
const char *p = *buf;
|
|
||||||
if (!out) return NULL;
|
|
||||||
p += strspn(p, WHITESPACES);
|
|
||||||
|
|
||||||
while(*p && !strspn(p, term)) {
|
|
||||||
char c = *p++;
|
|
||||||
if(c == '\\' && *p){
|
|
||||||
*out++ = *p++;
|
|
||||||
end= out;
|
|
||||||
}else if(c == '\''){
|
|
||||||
while(*p && *p != '\'')
|
|
||||||
*out++ = *p++;
|
|
||||||
if(*p){
|
|
||||||
p++;
|
|
||||||
end= out;
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
*out++ = c;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
do{
|
|
||||||
*out-- = 0;
|
|
||||||
}while(out >= end && strspn(out, WHITESPACES));
|
|
||||||
|
|
||||||
*buf = p;
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
const char *name; ///< a string representing the name of the color
|
const char *name; ///< a string representing the name of the color
|
||||||
uint8_t rgb_color[3]; ///< RGB values for the color
|
uint8_t rgb_color[3]; ///< RGB values for the color
|
||||||
@ -395,41 +359,6 @@ int main(void)
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
const char *strings[] = {
|
|
||||||
"''",
|
|
||||||
"",
|
|
||||||
":",
|
|
||||||
"\\",
|
|
||||||
"'",
|
|
||||||
" '' :",
|
|
||||||
" '' '' :",
|
|
||||||
"foo '' :",
|
|
||||||
"'foo'",
|
|
||||||
"foo ",
|
|
||||||
"foo\\",
|
|
||||||
"foo': blah:blah",
|
|
||||||
"foo\\: blah:blah",
|
|
||||||
"foo\'",
|
|
||||||
"'foo : ' :blahblah",
|
|
||||||
"\\ :blah",
|
|
||||||
" foo",
|
|
||||||
" foo ",
|
|
||||||
" foo \\ ",
|
|
||||||
"foo ':blah",
|
|
||||||
" foo bar : blahblah",
|
|
||||||
"\\f\\o\\o",
|
|
||||||
"'foo : \\ \\ ' : blahblah",
|
|
||||||
"'\\fo\\o:': blahblah",
|
|
||||||
"\\'fo\\o\\:': foo ' :blahblah"
|
|
||||||
};
|
|
||||||
|
|
||||||
for (i=0; i < FF_ARRAY_ELEMS(strings); i++) {
|
|
||||||
const char *p= strings[i];
|
|
||||||
printf("|%s|", p);
|
|
||||||
printf(" -> |%s|", av_get_token(&p, ":"));
|
|
||||||
printf(" + |%s|\n", p);
|
|
||||||
}
|
|
||||||
|
|
||||||
printf("\nTesting av_parse_color()\n");
|
printf("\nTesting av_parse_color()\n");
|
||||||
{
|
{
|
||||||
uint8_t rgba[4];
|
uint8_t rgba[4];
|
||||||
|
@ -27,21 +27,6 @@
|
|||||||
|
|
||||||
#include "libavutil/opt.h"
|
#include "libavutil/opt.h"
|
||||||
|
|
||||||
/**
|
|
||||||
* Unescape the given string until a non escaped terminating char,
|
|
||||||
* and return the token corresponding to the unescaped string.
|
|
||||||
*
|
|
||||||
* The normal \ and ' escaping is supported. Leading and trailing
|
|
||||||
* whitespaces are removed.
|
|
||||||
*
|
|
||||||
* @param buf the buffer to parse, buf will be updated to point to the
|
|
||||||
* terminating char
|
|
||||||
* @param term a 0-terminated list of terminating chars
|
|
||||||
* @return the malloced unescaped string, which must be av_freed by
|
|
||||||
* the user, NULL in case of allocation failure
|
|
||||||
*/
|
|
||||||
char *av_get_token(const char **buf, const char *term);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Put the RGBA values that correspond to color_string in rgba_color.
|
* Put the RGBA values that correspond to color_string in rgba_color.
|
||||||
*
|
*
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
|
|
||||||
#include <dlfcn.h>
|
#include <dlfcn.h>
|
||||||
#include <frei0r.h>
|
#include <frei0r.h>
|
||||||
|
#include "libavutil/avstring.h"
|
||||||
#include "avfilter.h"
|
#include "avfilter.h"
|
||||||
#include "parseutils.h"
|
#include "parseutils.h"
|
||||||
|
|
||||||
|
@ -97,3 +97,91 @@ char *av_d2str(double d)
|
|||||||
if(str) snprintf(str, 16, "%f", d);
|
if(str) snprintf(str, 16, "%f", d);
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define WHITESPACES " \n\t"
|
||||||
|
|
||||||
|
char *av_get_token(const char **buf, const char *term)
|
||||||
|
{
|
||||||
|
char *out = av_malloc(strlen(*buf) + 1);
|
||||||
|
char *ret= out, *end= out;
|
||||||
|
const char *p = *buf;
|
||||||
|
if (!out) return NULL;
|
||||||
|
p += strspn(p, WHITESPACES);
|
||||||
|
|
||||||
|
while(*p && !strspn(p, term)) {
|
||||||
|
char c = *p++;
|
||||||
|
if(c == '\\' && *p){
|
||||||
|
*out++ = *p++;
|
||||||
|
end= out;
|
||||||
|
}else if(c == '\''){
|
||||||
|
while(*p && *p != '\'')
|
||||||
|
*out++ = *p++;
|
||||||
|
if(*p){
|
||||||
|
p++;
|
||||||
|
end= out;
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
*out++ = c;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
do{
|
||||||
|
*out-- = 0;
|
||||||
|
}while(out >= end && strspn(out, WHITESPACES));
|
||||||
|
|
||||||
|
*buf = p;
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef TEST
|
||||||
|
|
||||||
|
#undef printf
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
printf("Testing av_get_token()\n");
|
||||||
|
{
|
||||||
|
const char *strings[] = {
|
||||||
|
"''",
|
||||||
|
"",
|
||||||
|
":",
|
||||||
|
"\\",
|
||||||
|
"'",
|
||||||
|
" '' :",
|
||||||
|
" '' '' :",
|
||||||
|
"foo '' :",
|
||||||
|
"'foo'",
|
||||||
|
"foo ",
|
||||||
|
" ' foo ' ",
|
||||||
|
"foo\\",
|
||||||
|
"foo': blah:blah",
|
||||||
|
"foo\\: blah:blah",
|
||||||
|
"foo\'",
|
||||||
|
"'foo : ' :blahblah",
|
||||||
|
"\\ :blah",
|
||||||
|
" foo",
|
||||||
|
" foo ",
|
||||||
|
" foo \\ ",
|
||||||
|
"foo ':blah",
|
||||||
|
" foo bar : blahblah",
|
||||||
|
"\\f\\o\\o",
|
||||||
|
"'foo : \\ \\ ' : blahblah",
|
||||||
|
"'\\fo\\o:': blahblah",
|
||||||
|
"\\'fo\\o\\:': foo ' :blahblah"
|
||||||
|
};
|
||||||
|
|
||||||
|
for (i=0; i < FF_ARRAY_ELEMS(strings); i++) {
|
||||||
|
const char *p= strings[i];
|
||||||
|
printf("|%s|", p);
|
||||||
|
printf(" -> |%s|", av_get_token(&p, ":"));
|
||||||
|
printf(" + |%s|\n", p);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* TEST */
|
||||||
|
@ -114,4 +114,20 @@ size_t av_strlcatf(char *dst, size_t size, const char *fmt, ...);
|
|||||||
*/
|
*/
|
||||||
char *av_d2str(double d);
|
char *av_d2str(double d);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unescape the given string until a non escaped terminating char,
|
||||||
|
* and return the token corresponding to the unescaped string.
|
||||||
|
*
|
||||||
|
* The normal \ and ' escaping is supported. Leading and trailing
|
||||||
|
* whitespaces are removed, unless they are escaped with '\' or are
|
||||||
|
* enclosed between ''.
|
||||||
|
*
|
||||||
|
* @param buf the buffer to parse, buf will be updated to point to the
|
||||||
|
* terminating char
|
||||||
|
* @param term a 0-terminated list of terminating chars
|
||||||
|
* @return the malloced unescaped string, which must be av_freed by
|
||||||
|
* the user, NULL in case of allocation failure
|
||||||
|
*/
|
||||||
|
char *av_get_token(const char **buf, const char *term);
|
||||||
|
|
||||||
#endif /* AVUTIL_AVSTRING_H */
|
#endif /* AVUTIL_AVSTRING_H */
|
||||||
|
@ -40,7 +40,7 @@
|
|||||||
#define AV_VERSION(a, b, c) AV_VERSION_DOT(a, b, c)
|
#define AV_VERSION(a, b, c) AV_VERSION_DOT(a, b, c)
|
||||||
|
|
||||||
#define LIBAVUTIL_VERSION_MAJOR 50
|
#define LIBAVUTIL_VERSION_MAJOR 50
|
||||||
#define LIBAVUTIL_VERSION_MINOR 29
|
#define LIBAVUTIL_VERSION_MINOR 30
|
||||||
#define LIBAVUTIL_VERSION_MICRO 0
|
#define LIBAVUTIL_VERSION_MICRO 0
|
||||||
|
|
||||||
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
|
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
|
||||||
|
Loading…
Reference in New Issue
Block a user