[FFmpeg-cvslog] AVOptions: do not range check flag options.

Anton Khirnov git at videolan.org
Mon Oct 28 11:32:24 CET 2013


ffmpeg | branch: master | Anton Khirnov <anton at khirnov.net> | Sat Oct 26 10:34:01 2013 +0200| [0b357a8095e72b092cc5c2aacc2f806db75ecae3] | committer: Anton Khirnov

AVOptions: do not range check flag options.

It does not make sense in the vast majority of use cases, no currently
defined AV_OPT_TYPE_FLAGS options in Libav set the range to anything
nontrivial, and many of those get it wrong (the "correct" range is
INT_MIN to INT_MAX so that the builtin constant "all" works).

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=0b357a8095e72b092cc5c2aacc2f806db75ecae3
---

 libavutil/opt.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/libavutil/opt.c b/libavutil/opt.c
index cba5b29..ede4a49 100644
--- a/libavutil/opt.c
+++ b/libavutil/opt.c
@@ -61,7 +61,8 @@ static int read_number(const AVOption *o, void *dst, double *num, int *den, int6
 
 static int write_number(void *obj, const AVOption *o, void *dst, double num, int den, int64_t intnum)
 {
-    if (o->max*den < num*intnum || o->min*den > num*intnum) {
+    if (o->type != AV_OPT_TYPE_FLAGS &&
+        (o->max * den < num * intnum || o->min * den > num * intnum)) {
         av_log(obj, AV_LOG_ERROR, "Value %f for parameter '%s' out of range\n",
                num*intnum/den, o->name);
         return AVERROR(ERANGE);



More information about the ffmpeg-cvslog mailing list