From: Michael Niedermayer Date: Sat, 24 May 2008 12:58:20 +0000 (+0000) Subject: Anoter try to make +- behave sanely. X-Git-Tag: v0.5~4650 X-Git-Url: http://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff_plain/9d2e6e84ceb10932713f8c1bdc11a0fa01de0fc1 Anoter try to make +- behave sanely. Originally committed as revision 13281 to svn://svn.ffmpeg.org/ffmpeg/trunk --- diff --git a/libavcodec/opt.c b/libavcodec/opt.c index 70f2f3d91f..1b429ab160 100644 --- a/libavcodec/opt.c +++ b/libavcodec/opt.c @@ -146,6 +146,7 @@ const AVOption *av_set_string(void *obj, const char *name, const char *val){ return o; } if(o->type != FF_OPT_TYPE_STRING){ + int notfirst=0; for(;;){ int i; char buf[256]; @@ -180,8 +181,8 @@ const AVOption *av_set_string(void *obj, const char *name, const char *val){ if (cmd=='+') d= av_get_int(obj, name, NULL) | (int64_t)d; else if(cmd=='-') d= av_get_int(obj, name, NULL) &~(int64_t)d; }else{ - if (cmd=='+') d= av_get_double(obj, name, NULL) + d; - else if(cmd=='-') d= av_get_double(obj, name, NULL) - d; + if (cmd=='+') d= notfirst*av_get_double(obj, name, NULL) + d; + else if(cmd=='-') d= notfirst*av_get_double(obj, name, NULL) - d; } if (!av_set_number(obj, name, d, 1, 1)) @@ -189,6 +190,7 @@ const AVOption *av_set_string(void *obj, const char *name, const char *val){ val+= i; if(!*val) return o; + notfirst=1; } return NULL; }