summaryrefslogtreecommitdiff
authorAnton Khirnov <anton@khirnov.net>2013-10-26 08:34:01 (GMT)
committer Anton Khirnov <anton@khirnov.net>2013-10-27 20:40:33 (GMT)
commit0b357a8095e72b092cc5c2aacc2f806db75ecae3 (patch)
tree26b5591cda4f8fd646e1f93f7f8d8e158a2bb783
parent94603feb1b3ad01a821a1a1cef1570b13f471821 (diff)
downloadffmpeg-0b357a8095e72b092cc5c2aacc2f806db75ecae3.zip
ffmpeg-0b357a8095e72b092cc5c2aacc2f806db75ecae3.tar.gz
ffmpeg-0b357a8095e72b092cc5c2aacc2f806db75ecae3.tar.bz2
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).
Diffstat
-rw-r--r--libavutil/opt.c3
1 files changed, 2 insertions, 1 deletions
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);