*/
#include "libavutil/avassert.h"
+#include "libavutil/avstring.h"
#include "libavutil/channel_layout.h"
#include "libavutil/common.h"
#include "libavutil/opt.h"
return ret;
for (i = 0; i < s->inputs; i++) {
- char name[32];
AVFilterPad pad = { 0 };
- snprintf(name, sizeof(name), "input%d", i);
- pad.type = AVMEDIA_TYPE_AUDIO;
- pad.name = av_strdup(name);
+ pad.type = AVMEDIA_TYPE_AUDIO;
+ pad.name = av_asprintf("input%d", i);
if (!pad.name)
return AVERROR(ENOMEM);
JoinContext *s = ctx->priv;
int i;
+ for (i = 0; i < s->inputs && s->input_frames; i++) {
+ av_frame_free(&s->input_frames[i]);
+ }
+
for (i = 0; i < ctx->nb_inputs; i++) {
av_freep(&ctx->input_pads[i].name);
- av_frame_free(&s->input_frames[i]);
}
av_freep(&s->channels);
int i, ret;
if ((ret = ff_add_channel_layout(&layouts, s->channel_layout)) < 0 ||
- (ret = ff_channel_layouts_ref(layouts, &ctx->outputs[0]->in_channel_layouts)) < 0)
+ (ret = ff_channel_layouts_ref(layouts, &ctx->outputs[0]->incfg.channel_layouts)) < 0)
return ret;
for (i = 0; i < ctx->nb_inputs; i++) {
layouts = ff_all_channel_layouts();
- if ((ret = ff_channel_layouts_ref(layouts, &ctx->inputs[i]->out_channel_layouts)) < 0)
+ if ((ret = ff_channel_layouts_ref(layouts, &ctx->inputs[i]->outcfg.channel_layouts)) < 0)
return ret;
}
{ NULL }
};
-AVFilter ff_af_join = {
+const AVFilter ff_af_join = {
.name = "join",
.description = NULL_IF_CONFIG_SMALL("Join multiple audio streams into "
"multi-channel output."),