mirror of
https://github.com/xenia-project/FFmpeg.git
synced 2024-11-28 22:10:34 +00:00
eval: make variables persistent so they can be used between evaluations.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
74f77eb048
commit
8fd56f7b12
@ -44,7 +44,7 @@ typedef struct Parser {
|
|||||||
int log_offset;
|
int log_offset;
|
||||||
void *log_ctx;
|
void *log_ctx;
|
||||||
#define VARS 10
|
#define VARS 10
|
||||||
double var[VARS];
|
double *var;
|
||||||
} Parser;
|
} Parser;
|
||||||
|
|
||||||
static const AVClass class = { "Eval", av_default_item_name, NULL, LIBAVUTIL_VERSION_INT, offsetof(Parser,log_offset), offsetof(Parser,log_ctx) };
|
static const AVClass class = { "Eval", av_default_item_name, NULL, LIBAVUTIL_VERSION_INT, offsetof(Parser,log_offset), offsetof(Parser,log_ctx) };
|
||||||
@ -136,6 +136,7 @@ struct AVExpr {
|
|||||||
double (*func2)(void *, double, double);
|
double (*func2)(void *, double, double);
|
||||||
} a;
|
} a;
|
||||||
struct AVExpr *param[2];
|
struct AVExpr *param[2];
|
||||||
|
double *var;
|
||||||
};
|
};
|
||||||
|
|
||||||
static double eval_expr(Parser *p, AVExpr *e)
|
static double eval_expr(Parser *p, AVExpr *e)
|
||||||
@ -190,6 +191,7 @@ void av_expr_free(AVExpr *e)
|
|||||||
if (!e) return;
|
if (!e) return;
|
||||||
av_expr_free(e->param[0]);
|
av_expr_free(e->param[0]);
|
||||||
av_expr_free(e->param[1]);
|
av_expr_free(e->param[1]);
|
||||||
|
av_freep(&e->var);
|
||||||
av_freep(&e);
|
av_freep(&e);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -510,6 +512,7 @@ int av_expr_parse(AVExpr **expr, const char *s,
|
|||||||
ret = AVERROR(EINVAL);
|
ret = AVERROR(EINVAL);
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
e->var= av_mallocz(sizeof(double) *VARS);
|
||||||
*expr = e;
|
*expr = e;
|
||||||
end:
|
end:
|
||||||
av_free(w);
|
av_free(w);
|
||||||
@ -519,6 +522,7 @@ end:
|
|||||||
double av_expr_eval(AVExpr *e, const double *const_values, void *opaque)
|
double av_expr_eval(AVExpr *e, const double *const_values, void *opaque)
|
||||||
{
|
{
|
||||||
Parser p = { 0 };
|
Parser p = { 0 };
|
||||||
|
p.var= e->var;
|
||||||
|
|
||||||
p.const_values = const_values;
|
p.const_values = const_values;
|
||||||
p.opaque = opaque;
|
p.opaque = opaque;
|
||||||
|
Loading…
Reference in New Issue
Block a user