mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-30 19:32:13 +00:00
avcodec/libx264: use a function to parse x264opts
This is needed for the following patch. Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
parent
3a37aa597f
commit
d1bd079d11
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user