|
|
|
@ -496,15 +496,22 @@ int av_opt_set(void *obj, const char *name, const char *val, int search_flags) |
|
|
|
|
case AV_OPT_TYPE_SAMPLE_FMT: |
|
|
|
|
return set_string_sample_fmt(obj, o, val, dst); |
|
|
|
|
case AV_OPT_TYPE_DURATION: |
|
|
|
|
if (!val) { |
|
|
|
|
*(int64_t *)dst = 0; |
|
|
|
|
{ |
|
|
|
|
int64_t usecs = 0; |
|
|
|
|
if (val) { |
|
|
|
|
if ((ret = av_parse_time(&usecs, val, 1)) < 0) { |
|
|
|
|
av_log(obj, AV_LOG_ERROR, "Unable to parse option value \"%s\" as duration\n", val); |
|
|
|
|
return ret; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if (usecs < o->min || usecs > o->max) { |
|
|
|
|
av_log(obj, AV_LOG_ERROR, "Value %f for parameter '%s' out of range [%g - %g]\n", |
|
|
|
|
usecs / 1000000.0, o->name, o->min / 1000000.0, o->max / 1000000.0); |
|
|
|
|
return AVERROR(ERANGE); |
|
|
|
|
} |
|
|
|
|
*(int64_t *)dst = usecs; |
|
|
|
|
return 0; |
|
|
|
|
} else { |
|
|
|
|
if ((ret = av_parse_time(dst, val, 1)) < 0) |
|
|
|
|
av_log(obj, AV_LOG_ERROR, "Unable to parse option value \"%s\" as duration\n", val); |
|
|
|
|
return ret; |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
case AV_OPT_TYPE_COLOR: |
|
|
|
|
return set_string_color(obj, o, val, dst); |
|
|
|
|
case AV_OPT_TYPE_CHANNEL_LAYOUT: |
|
|
|
|