[FFmpeg-devel] [PATCH] ffmpeg: allow to pass "auto" to filter_threads

Andreas Rheinhardt andreas.rheinhardt at outlook.com
Fri Sep 3 16:02:50 EEST 2021


James Almer:
> This way it accepts the same values as the libavcodec specific option "threads"
> 
> Fixes FATE with THREADS=auto which was broken in bdc1bdf3f5
> 
> Signed-off-by: James Almer <jamrial at gmail.com>
> ---
>  fftools/ffmpeg_opt.c | 20 +++++++++++++++++++-
>  1 file changed, 19 insertions(+), 1 deletion(-)
> 
> diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c
> index 428934a3d8..2a0b3fbd4f 100644
> --- a/fftools/ffmpeg_opt.c
> +++ b/fftools/ffmpeg_opt.c
> @@ -264,6 +264,24 @@ static AVDictionary *strip_specifiers(AVDictionary *dict)
>      return ret;
>  }
>  
> +static int opt_filter_threads(void *optctx, const char *opt, const char *arg)
> +{
> +    static const AVOption opts[] = {
> +        { "filter_threads", NULL, 0, AV_OPT_TYPE_INT,   {.i64 = 0 }, 0, INT_MAX, .unit = "filter_threads"},
> +        { "auto",           NULL, 0, AV_OPT_TYPE_CONST, {.i64 = 0 },             .unit = "filter_threads"},
> +        { NULL },
> +    };
> +    static const AVClass class = {
> +        .class_name = "",
> +        .item_name  = av_default_item_name,
> +        .option     = opts,
> +        .version    = LIBAVUTIL_VERSION_INT,
> +    };
> +    const AVClass *pclass = &class;
> +
> +    return av_opt_eval_int(&pclass, &opts[0], arg, &filter_nbthreads);
> +}
> +
>  static int opt_abort_on(void *optctx, const char *opt, const char *arg)
>  {
>      static const AVOption opts[] = {
> @@ -3620,7 +3638,7 @@ const OptionDef options[] = {
>          "set profile", "profile" },
>      { "filter",         HAS_ARG | OPT_STRING | OPT_SPEC | OPT_OUTPUT, { .off = OFFSET(filters) },
>          "set stream filtergraph", "filter_graph" },
> -    { "filter_threads",  HAS_ARG | OPT_INT,                          { &filter_nbthreads },
> +    { "filter_threads",  HAS_ARG,                                    { .func_arg = opt_filter_threads },
>          "number of non-complex filter threads" },
>      { "filter_script",  HAS_ARG | OPT_STRING | OPT_SPEC | OPT_OUTPUT, { .off = OFFSET(filter_scripts) },
>          "read stream filtergraph description from a file", "filename" },
> 
Why aren't you using the same approach as in libavcodec and accept
"auto" in libavfilter via a dedicated AV_OPT_TYPE_CONST?

- Andreas


More information about the ffmpeg-devel mailing list