[FFmpeg-devel] [PATCH] configure: Correct detection of pre-processor defines for configure _LISTS.

Matt Oliver protogonoi at gmail.com
Sat Apr 22 14:11:04 EEST 2017


On 22 April 2017 at 21:09, Matt Oliver <protogonoi at gmail.com> wrote:

> Currently the find_things configure function will scan a code file (e.g.
> allfilters.c) and then create a list of pre-processor values to be added
> to configure.
> Unfortunately the way it currently does it is incorrect with what the
> original c code expects. For example the following exists in
> allfilters.c:
> REGISTER_FILTER(FREI0R,         frei0r_src,     vsrc);
>
> where REGISTER_FILTER is defined as:
> #define REGISTER_FILTER(X, x, y)
> {
>     extern AVFilter ff_##y##_##x;
>     if (CONFIG_##X##_FILTER)
>         avfilter_register(&ff_##y##_##x);
> }
>
> In c code this will check a configuration pre-processor define called
> CONFIG_FREI0R_FILTER and then register the filter if currently set.
>
> The issue arises in that configure currently looks for REGISTER_FILTER
> but when found it will use the second parameter in the macro to create
> the configuration option. So it will actually return that the
> pre-processor define is CONFIG_FREI0R_SRC_FILTER and not
> CONFIG_FREI0R_FILTER as the source code actually expects.
>
> This patch changes the behaviour to match what the c code expects by
> using the first parameter in the macro to create configure values. Since
> the first parameter is in upper case it needs to be converted to lower
> case to be usable within configure (this may be why currently the
> incorrect - although lower case 2nd parameter is currently used).
> ---
>  configure | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/configure b/configure
> index e6fe05a6ee..346dbc660b 100755
> --- a/configure
> +++ b/configure
> @@ -3366,7 +3366,7 @@ find_things(){
>      thing=$1
>      pattern=$2
>      file=$source_path/$3
> -    sed -n "s/^[^#]*$pattern.*([^,]*, *\([^,]*\)\(,.*\)*).*/\1_$thing/p"
> "$file"
> +    sed -n "s/^[^#]*$pattern.*(\([^,]*\), *\([^,]*\)\(,.*\)*).*/\1_$thing/p"
> "$file" | tr '[:upper:]' '[:lower:]'
>  }
>
>  ENCODER_LIST=$(find_things  encoder  ENC      libavcodec/allcodecs.c)
> --
> 2.11.0.windows.3
>

Currently there are also some differences in what the makefiles expect for
the few options that have different values for the first and second macro
parameters. I can change these but i just wanted to get feedback as to
whether this is considered correct first.


More information about the ffmpeg-devel mailing list