[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