summaryrefslogtreecommitdiff
path: root/libavfilter/af_channelsplit.c
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2012-07-02 20:13:40 +0200
committerAnton Khirnov <anton@khirnov.net>2012-07-09 08:25:19 +0200
commitcd99146253cf9de5dad5694b97027d5612fdc61d (patch)
tree0b53395aa59459574c2e5fa1c277b4267e01c4a0 /libavfilter/af_channelsplit.c
parent8d18bc550e7dfc62bc872507a02ae2d7827882d6 (diff)
lavfi: add error handling to filter_samples().
Diffstat (limited to 'libavfilter/af_channelsplit.c')
-rw-r--r--libavfilter/af_channelsplit.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/libavfilter/af_channelsplit.c b/libavfilter/af_channelsplit.c
index ed134d2885..32b85d82f8 100644
--- a/libavfilter/af_channelsplit.c
+++ b/libavfilter/af_channelsplit.c
@@ -110,24 +110,29 @@ static int query_formats(AVFilterContext *ctx)
return 0;
}
-static void filter_samples(AVFilterLink *inlink, AVFilterBufferRef *buf)
+static int filter_samples(AVFilterLink *inlink, AVFilterBufferRef *buf)
{
AVFilterContext *ctx = inlink->dst;
- int i;
+ int i, ret = 0;
for (i = 0; i < ctx->nb_outputs; i++) {
AVFilterBufferRef *buf_out = avfilter_ref_buffer(buf, ~AV_PERM_WRITE);
- if (!buf_out)
- return;
+ if (!buf_out) {
+ ret = AVERROR(ENOMEM);
+ break;
+ }
buf_out->data[0] = buf_out->extended_data[0] = buf_out->extended_data[i];
buf_out->audio->channel_layout =
av_channel_layout_extract_channel(buf->audio->channel_layout, i);
- ff_filter_samples(ctx->outputs[i], buf_out);
+ ret = ff_filter_samples(ctx->outputs[i], buf_out);
+ if (ret < 0)
+ break;
}
avfilter_unref_buffer(buf);
+ return ret;
}
AVFilter avfilter_af_channelsplit = {