mirror of https://git.ffmpeg.org/ffmpeg.git
Introduce ff_eval2 which is equivalent to ff_eval but does not log anything.
Instead, error messages are passed upward by means of a struct member variable. Originally committed as revision 6348 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
a0403006f8
commit
ae41e29b5b
|
@ -52,6 +52,7 @@ typedef struct Parser{
|
||||||
double (**func2)(void *, double a, double b); // NULL terminated
|
double (**func2)(void *, double a, double b); // NULL terminated
|
||||||
char **func2_name; // NULL terminated
|
char **func2_name; // NULL terminated
|
||||||
void *opaque;
|
void *opaque;
|
||||||
|
char **error;
|
||||||
} Parser;
|
} Parser;
|
||||||
|
|
||||||
extern double av_strtod(const char *name, char **tail);
|
extern double av_strtod(const char *name, char **tail);
|
||||||
|
@ -88,7 +89,7 @@ static double evalPrimary(Parser *p){
|
||||||
|
|
||||||
p->s= strchr(p->s, '(');
|
p->s= strchr(p->s, '(');
|
||||||
if(p->s==NULL){
|
if(p->s==NULL){
|
||||||
av_log(NULL, AV_LOG_ERROR, "Parser: missing ( in \"%s\"\n", next);
|
*p->error = "missing (";
|
||||||
p->s= next;
|
p->s= next;
|
||||||
return NAN;
|
return NAN;
|
||||||
}
|
}
|
||||||
|
@ -99,7 +100,7 @@ static double evalPrimary(Parser *p){
|
||||||
d2= evalExpression(p);
|
d2= evalExpression(p);
|
||||||
}
|
}
|
||||||
if(p->s[0] != ')'){
|
if(p->s[0] != ')'){
|
||||||
av_log(NULL, AV_LOG_ERROR, "Parser: missing ) in \"%s\"\n", next);
|
*p->error = "missing )";
|
||||||
return NAN;
|
return NAN;
|
||||||
}
|
}
|
||||||
p->s++; // ")"
|
p->s++; // ")"
|
||||||
|
@ -138,7 +139,7 @@ static double evalPrimary(Parser *p){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
av_log(NULL, AV_LOG_ERROR, "Parser: unknown function in \"%s\"\n", next);
|
*p->error = "unknown function";
|
||||||
return NAN;
|
return NAN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -185,10 +186,10 @@ static double evalExpression(Parser *p){
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
double ff_eval(char *s, double *const_value, const char **const_name,
|
double ff_eval2(char *s, double *const_value, const char **const_name,
|
||||||
double (**func1)(void *, double), const char **func1_name,
|
double (**func1)(void *, double), const char **func1_name,
|
||||||
double (**func2)(void *, double, double), char **func2_name,
|
double (**func2)(void *, double, double), char **func2_name,
|
||||||
void *opaque){
|
void *opaque, char **error){
|
||||||
Parser p;
|
Parser p;
|
||||||
|
|
||||||
p.stack_index=100;
|
p.stack_index=100;
|
||||||
|
@ -200,10 +201,25 @@ double ff_eval(char *s, double *const_value, const char **const_name,
|
||||||
p.func2 = func2;
|
p.func2 = func2;
|
||||||
p.func2_name = func2_name;
|
p.func2_name = func2_name;
|
||||||
p.opaque = opaque;
|
p.opaque = opaque;
|
||||||
|
p.error= error;
|
||||||
|
|
||||||
return evalExpression(&p);
|
return evalExpression(&p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if LIBAVCODEC_VERSION_INT < ((51<<16)+(16<<8)+0)
|
||||||
|
attribute_deprecated double ff_eval(char *s, double *const_value, const char **const_name,
|
||||||
|
double (**func1)(void *, double), const char **func1_name,
|
||||||
|
double (**func2)(void *, double, double), char **func2_name,
|
||||||
|
void *opaque){
|
||||||
|
char *error=NULL;
|
||||||
|
double ret;
|
||||||
|
ret = ff_eval2(s, const_value, const_name, func1, func1_name, func2, func2_name, opaque, &error);
|
||||||
|
if (error)
|
||||||
|
av_log(NULL, AV_LOG_ERROR, "Error evaluating \"%s\": %s\n", s, error);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef TEST
|
#ifdef TEST
|
||||||
#undef printf
|
#undef printf
|
||||||
static double const_values[]={
|
static double const_values[]={
|
||||||
|
|
Loading…
Reference in New Issue