diff --git a/libavutil/opt.c b/libavutil/opt.c index 46f60aad0e..107be6ad85 100644 --- a/libavutil/opt.c +++ b/libavutil/opt.c @@ -252,6 +252,21 @@ static int set_string_number(void *obj, void *target_obj, const AVOption *o, con return 0; } +static int set_string_image_size(void *obj, const AVOption *o, const char *val, int *dst) +{ + int ret; + + if (!val || !strcmp(val, "none")) { + dst[0] = + dst[1] = 0; + return 0; + } + ret = av_parse_video_size(dst, dst + 1, val); + if (ret < 0) + av_log(obj, AV_LOG_ERROR, "Unable to parse option value \"%s\" as image size\n", val); + return ret; +} + #if FF_API_OLD_AVOPTIONS int av_set_string3(void *obj, const char *name, const char *val, int alloc, const AVOption **o_out) { @@ -286,15 +301,7 @@ int av_opt_set(void *obj, const char *name, const char *val, int search_flags) case AV_OPT_TYPE_FLOAT: case AV_OPT_TYPE_DOUBLE: case AV_OPT_TYPE_RATIONAL: return set_string_number(obj, target_obj, o, val, dst); - case AV_OPT_TYPE_IMAGE_SIZE: - if (!val || !strcmp(val, "none")) { - *(int *)dst = *((int *)dst + 1) = 0; - return 0; - } - ret = av_parse_video_size(dst, ((int *)dst) + 1, val); - if (ret < 0) - av_log(obj, AV_LOG_ERROR, "Unable to parse option value \"%s\" as image size\n", val); - return ret; + case AV_OPT_TYPE_IMAGE_SIZE: return set_string_image_size(obj, o, val, dst); case AV_OPT_TYPE_VIDEO_RATE: if (!val) { ret = AVERROR(EINVAL);