diff options
author | Anton Khirnov <anton@khirnov.net> | 2012-07-02 20:13:40 +0200 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2012-07-09 08:25:19 +0200 |
commit | cd99146253cf9de5dad5694b97027d5612fdc61d (patch) | |
tree | 0b53395aa59459574c2e5fa1c277b4267e01c4a0 /libavfilter/af_channelsplit.c | |
parent | 8d18bc550e7dfc62bc872507a02ae2d7827882d6 (diff) |
lavfi: add error handling to filter_samples().
Diffstat (limited to 'libavfilter/af_channelsplit.c')
-rw-r--r-- | libavfilter/af_channelsplit.c | 15 |
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 = { |