eval: add function to access the current "wallclock" time.

Reviewed-by: Stefano Sabatini <stefasab@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
pull/28/head^2
Michael Niedermayer 12 years ago
parent 665f2d432c
commit 31cd1e20bb
  1. 3
      doc/eval.texi
  2. 7
      libavutil/eval.c
  3. 2
      libavutil/version.h

@ -163,6 +163,9 @@ note, when you have the derivatives at y instead of 0
taylor(expr, x-y) can be used taylor(expr, x-y) can be used
When the series does not converge the results are undefined. When the series does not converge the results are undefined.
@item time(0)
The the current (wallclock) time in seconds
@item root(expr, max) @item root(expr, max)
Finds x where f(x)=0 in the interval 0..max. Finds x where f(x)=0 in the interval 0..max.
f() must be continuous or the result is undefined. f() must be continuous or the result is undefined.

@ -32,6 +32,7 @@
#include "eval.h" #include "eval.h"
#include "log.h" #include "log.h"
#include "mathematics.h" #include "mathematics.h"
#include "time.h"
typedef struct Parser { typedef struct Parser {
const AVClass *class; const AVClass *class;
@ -156,6 +157,11 @@ struct AVExpr {
double *var; double *var;
}; };
static double etime(double v)
{
return av_gettime() * 0.000001;
}
static double eval_expr(Parser *p, AVExpr *e) static double eval_expr(Parser *p, AVExpr *e)
{ {
switch (e->type) { 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, "exp" )) d->a.func0 = exp;
else if (strmatch(next, "log" )) d->a.func0 = log; else if (strmatch(next, "log" )) d->a.func0 = log;
else if (strmatch(next, "abs" )) d->a.func0 = fabs; 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, "squish")) d->type = e_squish;
else if (strmatch(next, "gauss" )) d->type = e_gauss; else if (strmatch(next, "gauss" )) d->type = e_gauss;
else if (strmatch(next, "mod" )) d->type = e_mod; else if (strmatch(next, "mod" )) d->type = e_mod;

@ -76,7 +76,7 @@
#define LIBAVUTIL_VERSION_MAJOR 52 #define LIBAVUTIL_VERSION_MAJOR 52
#define LIBAVUTIL_VERSION_MINOR 15 #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, \ #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
LIBAVUTIL_VERSION_MINOR, \ LIBAVUTIL_VERSION_MINOR, \

Loading…
Cancel
Save