[FFmpeg-devel] [PATCH 25/25] avfilter/af_headphone: Don't check for clipping in separate loop

Paul B Mahol onemda at gmail.com
Wed Sep 9 04:05:12 EEST 2020


On Tue, Sep 08, 2020 at 11:18:56PM +0200, Andreas Rheinhardt wrote:
> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>
> ---
> More patches will be coming later.
> 
>  libavfilter/af_headphone.c | 10 ++--------
>  1 file changed, 2 insertions(+), 8 deletions(-)
> 
> diff --git a/libavfilter/af_headphone.c b/libavfilter/af_headphone.c
> index 03ef88c4a4..edf8e773d7 100644
> --- a/libavfilter/af_headphone.c
> +++ b/libavfilter/af_headphone.c
> @@ -281,6 +281,8 @@ static int headphone_fast_convolute(AVFilterContext *ctx, void *arg, int jobnr,
>  
>      for (j = 0; j < in->nb_samples; j++) {
>          dst[2 * j] += fft_acc[j].re * fft_scale;
> +        if (fabsf(dst[2 * j]) > 1)
> +            n_clippings[0]++;
>      }
>  
>      for (j = 0; j < ir_len - 1; j++) {
> @@ -289,14 +291,6 @@ static int headphone_fast_convolute(AVFilterContext *ctx, void *arg, int jobnr,
>          *(ringbuffer + write_pos) += fft_acc[in->nb_samples + j].re * fft_scale;
>      }
>  
> -    for (i = 0; i < out->nb_samples; i++) {
> -        if (fabsf(dst[0]) > 1) {
> -            n_clippings[0]++;
> -        }
> -
> -        dst += 2;
> -    }
> -
>      *write = wr;

This patch is wrong and uneeded.
See, this filter use slice threading, and thus if multiple threads are used in multichannel audio
it will report incorrect results.


More information about the ffmpeg-devel mailing list