]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/eval.c
move dct_quantize and denoise_dct function pointers initialization to C
[ffmpeg] / libavcodec / eval.c
index 4b88d5acf0b7e52ea1d9a47f23e40b03a56287bb..877de355296909a645d499be5c053f9929878b9e 100644 (file)
@@ -1,7 +1,8 @@
 /*
  * simple arithmetic expression evaluator
  *
- * Copyright (c) 2002 Michael Niedermayer <michaelni@gmx.at>
+ * Copyright (c) 2002-2006 Michael Niedermayer <michaelni@gmx.at>
+ * Copyright (c) 2006 Oded Shimon <ods15@ods15.dyndns.org>
  *
  * This file is part of FFmpeg.
  *
@@ -109,7 +110,7 @@ static double av_strtod(const char *name, char **tail) {
 
         if(*next=='B') {
             d*=8;
-            *next++;
+            next++;
         }
     }
     /* if requested, fill in tail with the position after the last parsed
@@ -154,7 +155,7 @@ static double eval_expr(Parser * p, AVEvalExpr * e) {
         case e_func2:  return e->value * e->a.func2(p->opaque, eval_expr(p, e->param[0]), eval_expr(p, e->param[1]));
         case e_squish: return 1/(1+exp(4*eval_expr(p, e->param[0])));
         case e_gauss: { double d = eval_expr(p, e->param[0]); return exp(-d*d/2)/sqrt(2*M_PI); }
-        case e_ld:     return e->value * p->var[clip(eval_expr(p, e->param[0]), 0, VARS-1)];
+        case e_ld:     return e->value * p->var[av_clip(eval_expr(p, e->param[0]), 0, VARS-1)];
         case e_while: {
             double d = NAN;
             while(eval_expr(p, e->param[0]))
@@ -175,8 +176,8 @@ static double eval_expr(Parser * p, AVEvalExpr * e) {
                 case e_mul: return e->value * (d * d2);
                 case e_div: return e->value * (d / d2);
                 case e_add: return e->value * (d + d2);
-                case e_last:return d2;
-                case e_st : return e->value * (p->var[clip(d, 0, VARS-1)]= d2);
+                case e_last:return e->value * d2;
+                case e_st : return e->value * (p->var[av_clip(d, 0, VARS-1)]= d2);
             }
         }
     }
@@ -382,9 +383,14 @@ AVEvalExpr * ff_parse(char *s, const char **const_name,
                char **error){
     Parser p;
     AVEvalExpr * e;
+    char w[strlen(s) + 1], * wp = w;
+
+    while (*s)
+        if (!isspace(*s++)) *wp++ = s[-1];
+    *wp++ = 0;
 
     p.stack_index=100;
-    p.s= s;
+    p.s= w;
     p.const_name = const_name;
     p.func1      = func1;
     p.func1_name = func1_name;