aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/libx264.c
diff options
context:
space:
mode:
authorJames Almer <jamrial@gmail.com>2020-07-10 17:10:33 -0300
committerJames Almer <jamrial@gmail.com>2020-07-17 15:24:56 -0300
commitd1bd079d1144d1d882cf9a1ec8883388526e4604 (patch)
treed3e0da619c2bbaa0ada651a1d81a43abe82fa1c2 /libavcodec/libx264.c
parent3a37aa597fab22f321da94dccfa3ad61cc94f1f4 (diff)
downloadffmpeg-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.c44
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;
}