summaryrefslogtreecommitdiff
path: root/libavutil/opt.c
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2013-03-12 18:21:27 +0100
committerAnton Khirnov <anton@khirnov.net>2013-03-16 05:35:33 +0100
commit4d67ff8e8e3f8733ca2844143ebb2ac0ab34a9cd (patch)
tree475336b36d838201a79b2b5564076a19b1c6aba0 /libavutil/opt.c
parent9676b9a2cdc4a90611188fc48d8d388e427997c5 (diff)
AVOptions: fix using named constants with child contexts.
The named constant needs to be searched for in the same object on which the option is set, i.e. target_obj.
Diffstat (limited to 'libavutil/opt.c')
-rw-r--r--libavutil/opt.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/libavutil/opt.c b/libavutil/opt.c
index 661a61bca5..f3dcdeebf8 100644
--- a/libavutil/opt.c
+++ b/libavutil/opt.c
@@ -146,7 +146,7 @@ static int set_string(void *obj, const AVOption *o, const char *val, uint8_t **d
opt->type == AV_OPT_TYPE_INT) ? \
opt->default_val.i64 : opt->default_val.dbl)
-static int set_string_number(void *obj, const AVOption *o, const char *val, void *dst)
+static int set_string_number(void *obj, void *target_obj, const AVOption *o, const char *val, void *dst)
{
int ret = 0, notfirst = 0;
for (;;) {
@@ -169,7 +169,7 @@ static int set_string_number(void *obj, const AVOption *o, const char *val, void
buf[i] = 0;
{
- const AVOption *o_named = av_opt_find(obj, buf, o->unit, 0, 0);
+ const AVOption *o_named = av_opt_find(target_obj, buf, o->unit, 0, 0);
if (o_named && o_named->type == AV_OPT_TYPE_CONST)
d = DEFAULT_NUMVAL(o_named);
else if (!strcmp(buf, "default")) d = DEFAULT_NUMVAL(o);
@@ -224,7 +224,7 @@ int av_opt_set(void *obj, const char *name, const char *val, int search_flags)
case AV_OPT_TYPE_INT64:
case AV_OPT_TYPE_FLOAT:
case AV_OPT_TYPE_DOUBLE:
- case AV_OPT_TYPE_RATIONAL: return set_string_number(obj, o, val, dst);
+ case AV_OPT_TYPE_RATIONAL: return set_string_number(obj, target_obj, o, val, dst);
}
av_log(obj, AV_LOG_ERROR, "Invalid option type.\n");
@@ -236,7 +236,7 @@ int av_opt_set(void *obj, const char *name, const char *val, int search_flags)
{\
if (!o || o->type != opttype)\
return AVERROR(EINVAL);\
- return set_string_number(obj, o, val, name ## _out);\
+ return set_string_number(obj, obj, o, val, name ## _out);\
}
OPT_EVAL_NUMBER(flags, AV_OPT_TYPE_FLAGS, int)