[FFmpeg-devel] [PATCH 6/8] lavfi/avfilter: process options for filters without a private class
Anton Khirnov
anton at khirnov.net
Sun Jan 8 14:58:09 EET 2023
It still makes sense to apply AVFilterContext-level options to such
filters.
---
libavfilter/avfilter.c | 14 ++++++--------
1 file changed, 6 insertions(+), 8 deletions(-)
diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c
index 43dfb11bdb..c2ecdffa6f 100644
--- a/libavfilter/avfilter.c
+++ b/libavfilter/avfilter.c
@@ -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;
--
2.35.1
More information about the ffmpeg-devel
mailing list