|
|
|
@ -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); |
|
|
|
|