#include "libavutil/audioconvert.h"
#include "libavutil/avassert.h"
+#include "libavutil/common.h"
#include "libavutil/opt.h"
#include "audio.h"
.version = LIBAVUTIL_VERSION_INT,
};
-static void filter_samples(AVFilterLink *link, AVFilterBufferRef *buf)
+static int filter_samples(AVFilterLink *link, AVFilterBufferRef *buf)
{
AVFilterContext *ctx = link->dst;
JoinContext *s = ctx->priv;
av_assert0(i < ctx->nb_inputs);
av_assert0(!s->input_frames[i]);
s->input_frames[i] = buf;
+
+ return 0;
}
static int parse_maps(AVFilterContext *ctx)
return 0;
}
-static int join_init(AVFilterContext *ctx, const char *args, void *opaque)
+static int join_init(AVFilterContext *ctx, const char *args)
{
JoinContext *s = ctx->priv;
int ret, i;
for (i = 0; i < ctx->nb_inputs; i++) {
av_freep(&ctx->input_pads[i].name);
- avfilter_unref_buffer(s->input_frames[i]);
+ avfilter_unref_bufferp(&s->input_frames[i]);
}
av_freep(&s->channels);
int i;
for (i = 0; i < priv->nb_in_buffers; i++)
- avfilter_unref_buffer(priv->in_buffers[i]);
+ avfilter_unref_bufferp(&priv->in_buffers[i]);
av_freep(&priv->in_buffers);
av_freep(&buf->priv);
JoinBufferPriv *priv;
int linesize = INT_MAX;
int perms = ~0;
- int nb_samples;
+ int nb_samples = 0;
int i, j, ret;
/* get a frame on each input */
perms &= cur_buf->perms;
}
+ av_assert0(nb_samples > 0);
buf = avfilter_get_audio_buffer_ref_from_arrays(s->data, linesize, perms,
nb_samples, outlink->format,
outlink->channel_layout);
priv->nb_in_buffers = ctx->nb_inputs;
buf->buf->priv = priv;
- ff_filter_samples(outlink, buf);
+ ret = ff_filter_samples(outlink, buf);
memset(s->input_frames, 0, sizeof(*s->input_frames) * ctx->nb_inputs);
- return 0;
+ return ret;
fail:
avfilter_unref_buffer(buf);