mirror of https://git.ffmpeg.org/ffmpeg.git
lavfi/amerge: fix input pad name behaviour.
This fixes two problems: - the invalid pad.name stack pointer after init() ends - the duplicated name for all inputs
This commit is contained in:
parent
20361bcc26
commit
7b56dddd56
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue