[FFmpeg-devel] [PATCH 2/4] lavf: get rid of bespoke double scalar products

Andreas Rheinhardt andreas.rheinhardt at outlook.com
Wed May 29 18:46:05 EEST 2024


Rémi Denis-Courmont:
> ---
>  libavfilter/aap_template.c   | 14 +-------------
>  libavfilter/anlms_template.c | 16 ++--------------
>  libavfilter/arls_template.c  | 14 +-------------
>  3 files changed, 4 insertions(+), 40 deletions(-)
> 
> diff --git a/libavfilter/aap_template.c b/libavfilter/aap_template.c
> index ea9c815a89..0e0580fb32 100644
> --- a/libavfilter/aap_template.c
> +++ b/libavfilter/aap_template.c
> @@ -36,18 +36,6 @@
>  #define fn2(a,b)   fn3(a,b)
>  #define fn(a)      fn2(a, SAMPLE_FORMAT)
>  
> -#if DEPTH == 64
> -static double scalarproduct_double(const double *v1, const double *v2, int len)
> -{
> -    double p = 0.0;
> -
> -    for (int i = 0; i < len; i++)
> -        p += v1[i] * v2[i];
> -
> -    return p;
> -}
> -#endif
> -
>  static ftype fn(fir_sample)(AudioAPContext *s, ftype sample, ftype *delay,
>                              ftype *coeffs, ftype *tmp, int *offset)
>  {
> @@ -60,7 +48,7 @@ static ftype fn(fir_sample)(AudioAPContext *s, ftype sample, ftype *delay,
>  #if DEPTH == 32
>      output = s->fdsp->scalarproduct_float(delay, tmp, s->kernel_size);
>  #else
> -    output = scalarproduct_double(delay, tmp, s->kernel_size);
> +    output = s->fdsp->scalarproduct_double(delay, tmp, s->kernel_size);
>  #endif
>  
>      if (--(*offset) < 0)
> diff --git a/libavfilter/anlms_template.c b/libavfilter/anlms_template.c
> index b25df4fa18..a8d1dbfe0f 100644
> --- a/libavfilter/anlms_template.c
> +++ b/libavfilter/anlms_template.c
> @@ -33,18 +33,6 @@
>  #define fn2(a,b)   fn3(a,b)
>  #define fn(a)      fn2(a, SAMPLE_FORMAT)
>  
> -#if DEPTH == 64
> -static double scalarproduct_double(const double *v1, const double *v2, int len)
> -{
> -    double p = 0.0;
> -
> -    for (int i = 0; i < len; i++)
> -        p += v1[i] * v2[i];
> -
> -    return p;
> -}
> -#endif
> -
>  static ftype fn(fir_sample)(AudioNLMSContext *s, ftype sample, ftype *delay,
>                              ftype *coeffs, ftype *tmp, int *offset)
>  {
> @@ -58,7 +46,7 @@ static ftype fn(fir_sample)(AudioNLMSContext *s, ftype sample, ftype *delay,
>  #if DEPTH == 32
>      output = s->fdsp->scalarproduct_float(delay, tmp, s->kernel_size);
>  #else
> -    output = scalarproduct_double(delay, tmp, s->kernel_size);
> +    output = s->fdsp->scalarproduct_double(delay, tmp, s->kernel_size);
>  #endif
>  
>      if (--(*offset) < 0)
> @@ -85,7 +73,7 @@ static ftype fn(process_sample)(AudioNLMSContext *s, ftype input, ftype desired,
>  #if DEPTH == 32
>      sum = s->fdsp->scalarproduct_float(delay, delay, s->kernel_size);
>  #else
> -    sum = scalarproduct_double(delay, delay, s->kernel_size);
> +    sum = s->fdsp->scalarproduct_double(delay, delay, s->kernel_size);
>  #endif
>      norm = s->eps + sum;
>      b = mu * e / norm;
> diff --git a/libavfilter/arls_template.c b/libavfilter/arls_template.c
> index d8b19d89a5..c67b48cf6f 100644
> --- a/libavfilter/arls_template.c
> +++ b/libavfilter/arls_template.c
> @@ -39,18 +39,6 @@
>  #define fn2(a,b)   fn3(a,b)
>  #define fn(a)      fn2(a, SAMPLE_FORMAT)
>  
> -#if DEPTH == 64
> -static double scalarproduct_double(const double *v1, const double *v2, int len)
> -{
> -    double p = 0.0;
> -
> -    for (int i = 0; i < len; i++)
> -        p += v1[i] * v2[i];
> -
> -    return p;
> -}
> -#endif
> -
>  static ftype fn(fir_sample)(AudioRLSContext *s, ftype sample, ftype *delay,
>                              ftype *coeffs, ftype *tmp, int *offset)
>  {
> @@ -64,7 +52,7 @@ static ftype fn(fir_sample)(AudioRLSContext *s, ftype sample, ftype *delay,
>  #if DEPTH == 32
>      output = s->fdsp->scalarproduct_float(delay, tmp, s->kernel_size);
>  #else
> -    output = scalarproduct_double(delay, tmp, s->kernel_size);
> +    output = s->fdsp->scalarproduct_double(delay, tmp, s->kernel_size);
>  #endif
>  
>      if (--(*offset) < 0)

1. lavf is libavformat; libavfilter is lavfi.
2. Do you intend to use this outside of lavfi?

- Andreas



More information about the ffmpeg-devel mailing list