lavfi/avfilter: process options for filters without a private class

It still makes sense to apply AVFilterContext-level options to such
filters.
This commit is contained in:
Anton Khirnov 2023-01-08 11:19:47 +01:00
parent d234b4b193
commit 1c18530e93
1 changed files with 6 additions and 8 deletions

View File

@ -812,7 +812,8 @@ static int process_options(AVFilterContext *ctx, AVDictionary **options,
while (*args) {
const char *shorthand = NULL;
o = av_opt_next(ctx->priv, o);
if (ctx->filter->priv_class)
o = av_opt_next(ctx->priv, o);
if (o) {
if (o->type == AV_OPT_TYPE_CONST || o->offset == offset)
continue;
@ -835,7 +836,10 @@ static int process_options(AVFilterContext *ctx, AVDictionary **options,
args++;
if (parsed_key) {
key = parsed_key;
while ((o = av_opt_next(ctx->priv, o))); /* discard all remaining shorthand */
/* discard all remaining shorthand */
if (ctx->filter->priv_class)
while ((o = av_opt_next(ctx->priv, o)));
} else {
key = shorthand;
}
@ -904,12 +908,6 @@ int avfilter_init_str(AVFilterContext *filter, const char *args)
int ret = 0;
if (args && *args) {
if (!filter->filter->priv_class) {
av_log(filter, AV_LOG_ERROR, "This filter does not take any "
"options, but options were provided: %s.\n", args);
return AVERROR(EINVAL);
}
ret = process_options(filter, &options, args);
if (ret < 0)
goto fail;