eval: add function to access the current "wallclock" time.
Reviewed-by: Stefano Sabatini <stefasab@gmail.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
665f2d432c
commit
31cd1e20bb
@ -163,6 +163,9 @@ note, when you have the derivatives at y instead of 0
|
||||
taylor(expr, x-y) can be used
|
||||
When the series does not converge the results are undefined.
|
||||
|
||||
@item time(0)
|
||||
The the current (wallclock) time in seconds
|
||||
|
||||
@item root(expr, max)
|
||||
Finds x where f(x)=0 in the interval 0..max.
|
||||
f() must be continuous or the result is undefined.
|
||||
|
@ -32,6 +32,7 @@
|
||||
#include "eval.h"
|
||||
#include "log.h"
|
||||
#include "mathematics.h"
|
||||
#include "time.h"
|
||||
|
||||
typedef struct Parser {
|
||||
const AVClass *class;
|
||||
@ -156,6 +157,11 @@ struct AVExpr {
|
||||
double *var;
|
||||
};
|
||||
|
||||
static double etime(double v)
|
||||
{
|
||||
return av_gettime() * 0.000001;
|
||||
}
|
||||
|
||||
static double eval_expr(Parser *p, AVExpr *e)
|
||||
{
|
||||
switch (e->type) {
|
||||
@ -377,6 +383,7 @@ static int parse_primary(AVExpr **e, Parser *p)
|
||||
else if (strmatch(next, "exp" )) d->a.func0 = exp;
|
||||
else if (strmatch(next, "log" )) d->a.func0 = log;
|
||||
else if (strmatch(next, "abs" )) d->a.func0 = fabs;
|
||||
else if (strmatch(next, "time" )) d->a.func0 = etime;
|
||||
else if (strmatch(next, "squish")) d->type = e_squish;
|
||||
else if (strmatch(next, "gauss" )) d->type = e_gauss;
|
||||
else if (strmatch(next, "mod" )) d->type = e_mod;
|
||||
|
@ -76,7 +76,7 @@
|
||||
|
||||
#define LIBAVUTIL_VERSION_MAJOR 52
|
||||
#define LIBAVUTIL_VERSION_MINOR 15
|
||||
#define LIBAVUTIL_VERSION_MICRO 100
|
||||
#define LIBAVUTIL_VERSION_MICRO 101
|
||||
|
||||
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
|
||||
LIBAVUTIL_VERSION_MINOR, \
|
||||
|
Loading…
Reference in New Issue
Block a user