[FFmpeg-devel] [PATCH] lavfi/amerge: fix input pad name behaviour.

Stefano Sabatini stefasab at gmail.com
Tue Sep 11 09:41:13 CEST 2012


On date Tuesday 2012-09-11 06:47:00 +0200, Clément Bœsch encoded:
> This fixes two problems:
>  - the invalid pad.name stack pointer after init() ends
>  - the duplicated name for all inputs
> ---
>  libavfilter/af_amerge.c | 10 +++++++---
>  1 file changed, 7 insertions(+), 3 deletions(-)
> 
> diff --git a/libavfilter/af_amerge.c b/libavfilter/af_amerge.c
> index 542f8a6..1ff3c8c 100644
> --- a/libavfilter/af_amerge.c
> +++ b/libavfilter/af_amerge.c
> @@ -24,6 +24,7 @@
>   */
>  
>  #include "libavutil/audioconvert.h"
> +#include "libavutil/avstring.h"
>  #include "libavutil/bprint.h"
>  #include "libavutil/opt.h"
>  #include "libswresample/swresample.h" // only for SWR_CH_MAX
> @@ -61,8 +62,10 @@ static av_cold void uninit(AVFilterContext *ctx)
>      AMergeContext *am = ctx->priv;
>      int i;
>  
> -    for (i = 0; i < am->nb_inputs; i++)
> +    for (i = 0; i < am->nb_inputs; i++) {
>          ff_bufqueue_discard_all(&am->in[i].queue);
> +        av_freep(&ctx->input_pads[i].name);
> +    }
>      av_freep(&am->in);
>  }
>  
> @@ -293,7 +296,6 @@ static av_cold int init(AVFilterContext *ctx, const char *args)
>  {
>      AMergeContext *am = ctx->priv;
>      int ret, i;
> -    char name[16];
>  
>      am->class = &amerge_class;
>      av_opt_set_defaults(am);
> @@ -306,13 +308,15 @@ static av_cold int init(AVFilterContext *ctx, const char *args)
>      if (!am->in)
>          return AVERROR(ENOMEM);
>      for (i = 0; i < am->nb_inputs; i++) {
> +        char *name = av_asprintf("in%d", i);
> +        if (!name)
> +            return AVERROR(ENOMEM);
>          AVFilterPad pad = {
>              .name             = name,
>              .type             = AVMEDIA_TYPE_AUDIO,
>              .filter_samples   = filter_samples,
>              .min_perms        = AV_PERM_READ | AV_PERM_PRESERVE,
>          };
> -        snprintf(name, sizeof(name), "in%d", i);
>          ff_insert_inpad(ctx, i, &pad);
>      }
>      return 0;

Looks good to me, please apply it soon, thanks.
-- 
FFmpeg = Frightening and Fascinating Merciful Political Enlightened Geisha


More information about the ffmpeg-devel mailing list