[FFmpeg-devel] [PATCH] avutil/opt: set_string_number(): remove unneeded copy

Muhammad Faiz mfcc64 at gmail.com
Tue Jul 22 08:39:43 CEST 2014


also remove unused variables

thanks
-------------- next part --------------

---
 libavutil/opt.c | 21 ++++++++++-----------
 1 file changed, 10 insertions(+), 11 deletions(-)

diff --git a/libavutil/opt.c b/libavutil/opt.c
index 40c944d..08f6f15 100644
--- a/libavutil/opt.c
+++ b/libavutil/opt.c
@@ -191,22 +191,20 @@ static int set_string_number(void *obj, void *target_obj, const AVOption *o, con
     }
 
     for (;;) {
-        int i, den = 1;
+        int i = 0;
         char buf[256];
         int cmd = 0;
-        double d, num = 1;
+        double d;
         int64_t intnum = 1;
 
-        i = 0;
-        if (*val == '+' || *val == '-') {
-            if (o->type == AV_OPT_TYPE_FLAGS)
+        if (o->type == AV_OPT_TYPE_FLAGS) {
+            if (*val == '+' || *val == '-')
                 cmd = *(val++);
+            for (; i < sizeof(buf) - 1 && val[i] && val[i] != '+' && val[i] != '-'; i++)
+                buf[i] = val[i];
+            buf[i] = 0;
         }
 
-        for (; i < sizeof(buf) - 1 && val[i] && (o->type != AV_OPT_TYPE_FLAGS || val[i] != '+' && val[i] != '-'); i++)
-            buf[i] = val[i];
-        buf[i] = 0;
-
         {
             const AVOption *o_named;
             int res;
@@ -241,7 +239,8 @@ static int set_string_number(void *obj, void *target_obj, const AVOption *o, con
             const_names [ci] = NULL;
             const_values[ci] = 0;
 
-            res = av_expr_parse_and_eval(&d, buf, const_names, const_values, NULL, NULL, NULL, NULL, NULL, 0, obj);
+            res = av_expr_parse_and_eval(&d, (o->type == AV_OPT_TYPE_FLAGS) ? buf : val, const_names,
+                                         const_values, NULL, NULL, NULL, NULL, NULL, 0, obj);
             if (res < 0) {
                 av_log(obj, AV_LOG_ERROR, "Unable to parse option value \"%s\"\n", val);
                 return res;
@@ -256,7 +255,7 @@ static int set_string_number(void *obj, void *target_obj, const AVOption *o, con
         if ((ret = write_number(obj, o, dst, d, 1, 1)) < 0)
             return ret;
         val += i;
-        if (!*val)
+        if (o->type != AV_OPT_TYPE_FLAGS || !*val)
             return 0;
     }
 
-- 
1.8.3.1


More information about the ffmpeg-devel mailing list