diff options
author | James Almer <jamrial@gmail.com> | 2020-07-10 17:10:33 -0300 |
---|---|---|
committer | James Almer <jamrial@gmail.com> | 2020-07-17 15:24:56 -0300 |
commit | d1bd079d1144d1d882cf9a1ec8883388526e4604 (patch) | |
tree | d3e0da619c2bbaa0ada651a1d81a43abe82fa1c2 /libavcodec/libx264.c | |
parent | 3a37aa597fab22f321da94dccfa3ad61cc94f1f4 (diff) | |
download | ffmpeg-d1bd079d1144d1d882cf9a1ec8883388526e4604.tar.gz |
avcodec/libx264: use a function to parse x264opts
This is needed for the following patch.
Signed-off-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'libavcodec/libx264.c')
-rw-r--r-- | libavcodec/libx264.c | 44 |
1 files changed, 28 insertions, 16 deletions
diff --git a/libavcodec/libx264.c b/libavcodec/libx264.c index d4b1fd0d53..4a82e1ba25 100644 --- a/libavcodec/libx264.c +++ b/libavcodec/libx264.c @@ -519,19 +519,25 @@ static av_cold int X264_close(AVCodecContext *avctx) return 0; } -#define OPT_STR(opt, param) \ - do { \ - int ret; \ - if ((ret = x264_param_parse(&x4->params, opt, param)) < 0) { \ - if(ret == X264_PARAM_BAD_NAME) \ - av_log(avctx, AV_LOG_ERROR, \ - "bad option '%s': '%s'\n", opt, param); \ - else \ - av_log(avctx, AV_LOG_ERROR, \ - "bad value for '%s': '%s'\n", opt, param); \ - return -1; \ - } \ - } while (0) +static int parse_opts(AVCodecContext *avctx, const char *opt, const char *param) +{ + X264Context *x4 = avctx->priv_data; + int ret; + + if ((ret = x264_param_parse(&x4->params, opt, param)) < 0) { + if (ret == X264_PARAM_BAD_NAME) { + av_log(avctx, AV_LOG_ERROR, + "bad option '%s': '%s'\n", opt, param); + ret = AVERROR(EINVAL); + } else { + av_log(avctx, AV_LOG_ERROR, + "bad value for '%s': '%s'\n", opt, param); + ret = AVERROR(EINVAL); + } + } + + return ret; +} static int convert_pix_fmt(enum AVPixelFormat pix_fmt) { @@ -581,6 +587,7 @@ static av_cold int X264_init(AVCodecContext *avctx) X264Context *x4 = avctx->priv_data; AVCPBProperties *cpb_props; int sw,sh; + int ret; if (avctx->global_quality > 0) av_log(avctx, AV_LOG_WARNING, "-qscale is ignored, -crf is recommended.\n"); @@ -890,9 +897,14 @@ FF_ENABLE_DEPRECATION_WARNINGS while(p){ char param[4096]={0}, val[4096]={0}; if(sscanf(p, "%4095[^:=]=%4095[^:]", param, val) == 1){ - OPT_STR(param, "1"); - }else - OPT_STR(param, val); + ret = parse_opts(avctx, param, "1"); + if (ret < 0) + return ret; + } else { + ret = parse_opts(avctx, param, val); + if (ret < 0) + return ret; + } p= strchr(p, ':'); p+=!!p; } |