[FFmpeg-devel] [PATCH] avfilter/af_adelay: make per channel delay argument an int64_t

Andreas Rheinhardt andreas.rheinhardt at outlook.com
Fri Apr 23 17:18:20 EEST 2021


James Almer:
> Should fix ticket #9196
> 
> Signed-off-by: James Almer <jamrial at gmail.com>
> ---
>  libavfilter/af_adelay.c | 13 +++++++++----
>  1 file changed, 9 insertions(+), 4 deletions(-)
> 
> diff --git a/libavfilter/af_adelay.c b/libavfilter/af_adelay.c
> index 6ac81c2a3e..81ff7947f5 100644
> --- a/libavfilter/af_adelay.c
> +++ b/libavfilter/af_adelay.c
> @@ -28,9 +28,9 @@
>  #include "internal.h"
>  
>  typedef struct ChanDelay {
> -    int delay;
> -    unsigned delay_index;
> -    unsigned index;
> +    int64_t delay;
> +    size_t delay_index;
> +    size_t index;
>      uint8_t *samples;
>  } ChanDelay;
>  
> @@ -152,7 +152,7 @@ static int config_input(AVFilterLink *inlink)
>  
>          p = NULL;
>  
> -        ret = av_sscanf(arg, "%d%c", &d->delay, &type);
> +        ret = av_sscanf(arg, "%"SCNd64"%c", &d->delay, &type);
>          if (ret != 2 || type != 'S') {
>              div = type == 's' ? 1.0 : 1000.0;
>              if (av_sscanf(arg, "%f", &delay) != 1) {
> @@ -194,6 +194,11 @@ static int config_input(AVFilterLink *inlink)
>          if (!d->delay)
>              continue;
>  
> +        if (d->delay > SIZE_MAX) {

Does this give a new compiler warning on 64bit systems (where this check
is tautologically false)?

> +            av_log(ctx, AV_LOG_ERROR, "Requested delay is too big.\n");
> +            return AVERROR(EINVAL);
> +        }
> +
>          d->samples = av_malloc_array(d->delay, s->block_align);
>          if (!d->samples)
>              return AVERROR(ENOMEM);
> 



More information about the ffmpeg-devel mailing list