[FFmpeg-devel] [PATCH 1/2] ffmpeg: add disable_all_auto_conversion_filters option.

Mark Thompson sw at jkqxz.net
Fri Aug 14 21:58:26 EEST 2020


On 14/08/2020 18:14, Nicolas George wrote:
> Signed-off-by: Nicolas George <george at nsup.org>
> ---
>   doc/ffmpeg.texi         | 5 +++++
>   fftools/ffmpeg.h        | 1 +
>   fftools/ffmpeg_filter.c | 2 ++
>   fftools/ffmpeg_opt.c    | 3 +++
>   4 files changed, 11 insertions(+)
> 
> diff --git a/doc/ffmpeg.texi b/doc/ffmpeg.texi
> index 267ddfe8b5..1603431d56 100644
> --- a/doc/ffmpeg.texi
> +++ b/doc/ffmpeg.texi
> @@ -1746,6 +1746,11 @@ this buffer, in packets, for the matching output stream.
>   The default value of this option should be high enough for most uses, so only
>   touch this option if you are sure that you need it.
>   
> + at item -disable_all_auto_conversion_filters (@emph{global})
> +Disable automatically inserting conversion filters in all filter graphs,
> +including those defined by @option{-vf}, @option{-af},
> + at option{-filter_complex} and @option{-lavfi}.

The relation to the existing -autorotate and -autoscale options is confusing - those aren't disabled by this (because they are applied differently), but it sounds like they would be.

I'm not sure how to make this better.  Maybe it should be called "-autoconvert" to match and then override the others?

> +
>   @end table
>   
>   As a special exception, you can use a bitmap subtitle stream as input: it
> diff --git a/fftools/ffmpeg.h b/fftools/ffmpeg.h
> index 6e3f2545c7..acd297c8e8 100644
> --- a/fftools/ffmpeg.h
> +++ b/fftools/ffmpeg.h
> @@ -613,6 +613,7 @@ extern char *videotoolbox_pixfmt;
>   extern int filter_nbthreads;
>   extern int filter_complex_nbthreads;
>   extern int vstats_version;
> +extern int disable_all_auto_conversion_filters;
>   
>   extern const AVIOInterruptCB int_cb;
>   
> diff --git a/fftools/ffmpeg_filter.c b/fftools/ffmpeg_filter.c
> index 4784e8a575..8721403d7a 100644
> --- a/fftools/ffmpeg_filter.c
> +++ b/fftools/ffmpeg_filter.c
> @@ -1104,6 +1104,8 @@ int configure_filtergraph(FilterGraph *fg)
>           configure_output_filter(fg, fg->outputs[i], cur);
>       avfilter_inout_free(&outputs);
>   
> +    if (disable_all_auto_conversion_filters)
> +        avfilter_graph_set_auto_convert(fg->graph, AVFILTER_AUTO_CONVERT_NONE);
>       if ((ret = avfilter_graph_config(fg->graph, NULL)) < 0)
>           goto fail;
>   
> diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c
> index 853550a142..e6131dac97 100644
> --- a/fftools/ffmpeg_opt.c
> +++ b/fftools/ffmpeg_opt.c
> @@ -172,6 +172,7 @@ float max_error_rate  = 2.0/3;
>   int filter_nbthreads = 0;
>   int filter_complex_nbthreads = 0;
>   int vstats_version = 2;
> +int disable_all_auto_conversion_filters = 0;
>   
>   
>   static int intra_only         = 0;
> @@ -3545,6 +3546,8 @@ const OptionDef options[] = {
>           "create a complex filtergraph", "graph_description" },
>       { "filter_complex_script", HAS_ARG | OPT_EXPERT,                 { .func_arg = opt_filter_complex_script },
>           "read complex filtergraph description from a file", "filename" },
> +    { "disable_all_auto_conversion_filters", OPT_BOOL | OPT_EXPERT,  { &disable_all_auto_conversion_filters },
> +        "create a complex filtergraph", "graph_description" },

The help strings here looks suspiciously similar to the -filter_complex ones...

>       { "stats",          OPT_BOOL,                                    { &print_stats },
>           "print progress report during encoding", },
>       { "attach",         HAS_ARG | OPT_PERFILE | OPT_EXPERT |
> 

- Mark


More information about the ffmpeg-devel mailing list