|
|
|
@ -213,7 +213,7 @@ int av_opt_set(void *obj, const char *name, const char *val, int search_flags) |
|
|
|
|
const AVOption *o = av_opt_find2(obj, name, NULL, 0, search_flags, &target_obj); |
|
|
|
|
if (!o || !target_obj) |
|
|
|
|
return AVERROR_OPTION_NOT_FOUND; |
|
|
|
|
if (!val) |
|
|
|
|
if (!val || o->flags & AV_OPT_FLAG_READONLY) |
|
|
|
|
return AVERROR(EINVAL); |
|
|
|
|
|
|
|
|
|
dst = ((uint8_t*)target_obj) + o->offset; |
|
|
|
@ -235,7 +235,7 @@ int av_opt_set(void *obj, const char *name, const char *val, int search_flags) |
|
|
|
|
#define OPT_EVAL_NUMBER(name, opttype, vartype)\ |
|
|
|
|
int av_opt_eval_ ## name(void *obj, const AVOption *o, const char *val, vartype *name ## _out)\
|
|
|
|
|
{\
|
|
|
|
|
if (!o || o->type != opttype)\
|
|
|
|
|
if (!o || o->type != opttype || o->flags & AV_OPT_FLAG_READONLY)\
|
|
|
|
|
return AVERROR(EINVAL);\
|
|
|
|
|
return set_string_number(obj, obj, o, val, name ## _out);\
|
|
|
|
|
} |
|
|
|
@ -256,6 +256,9 @@ static int set_number(void *obj, const char *name, double num, int den, int64_t |
|
|
|
|
if (!o || !target_obj) |
|
|
|
|
return AVERROR_OPTION_NOT_FOUND; |
|
|
|
|
|
|
|
|
|
if (o->flags & AV_OPT_FLAG_READONLY) |
|
|
|
|
return AVERROR(EINVAL); |
|
|
|
|
|
|
|
|
|
dst = ((uint8_t*)target_obj) + o->offset; |
|
|
|
|
return write_number(obj, o, dst, num, den, intnum); |
|
|
|
|
} |
|
|
|
@ -286,7 +289,7 @@ int av_opt_set_bin(void *obj, const char *name, const uint8_t *val, int len, int |
|
|
|
|
if (!o || !target_obj) |
|
|
|
|
return AVERROR_OPTION_NOT_FOUND; |
|
|
|
|
|
|
|
|
|
if (o->type != AV_OPT_TYPE_BINARY) |
|
|
|
|
if (o->type != AV_OPT_TYPE_BINARY || o->flags & AV_OPT_FLAG_READONLY) |
|
|
|
|
return AVERROR(EINVAL); |
|
|
|
|
|
|
|
|
|
ptr = av_malloc(len); |
|
|
|
@ -479,6 +482,8 @@ static void opt_list(void *obj, void *av_log_obj, const char *unit, |
|
|
|
|
av_log(av_log_obj, AV_LOG_INFO, "%c", (opt->flags & AV_OPT_FLAG_VIDEO_PARAM ) ? 'V' : '.'); |
|
|
|
|
av_log(av_log_obj, AV_LOG_INFO, "%c", (opt->flags & AV_OPT_FLAG_AUDIO_PARAM ) ? 'A' : '.'); |
|
|
|
|
av_log(av_log_obj, AV_LOG_INFO, "%c", (opt->flags & AV_OPT_FLAG_SUBTITLE_PARAM) ? 'S' : '.'); |
|
|
|
|
av_log(av_log_obj, AV_LOG_INFO, "%c", (opt->flags & AV_OPT_FLAG_EXPORT) ? 'X' : '.'); |
|
|
|
|
av_log(av_log_obj, AV_LOG_INFO, "%c", (opt->flags & AV_OPT_FLAG_READONLY) ? 'R' : '.'); |
|
|
|
|
|
|
|
|
|
if (opt->help) |
|
|
|
|
av_log(av_log_obj, AV_LOG_INFO, " %s", opt->help); |
|
|
|
@ -505,6 +510,9 @@ void av_opt_set_defaults(void *s) |
|
|
|
|
{ |
|
|
|
|
const AVOption *opt = NULL; |
|
|
|
|
while ((opt = av_opt_next(s, opt)) != NULL) { |
|
|
|
|
if (opt->flags & AV_OPT_FLAG_READONLY) |
|
|
|
|
continue; |
|
|
|
|
|
|
|
|
|
switch (opt->type) { |
|
|
|
|
case AV_OPT_TYPE_CONST: |
|
|
|
|
/* Nothing to be done here */ |
|
|
|
|