diff --git a/libavfilter/af_channelsplit.c b/libavfilter/af_channelsplit.c index d18d91dcb6..1c4e815c6e 100644 --- a/libavfilter/af_channelsplit.c +++ b/libavfilter/af_channelsplit.c @@ -163,8 +163,10 @@ static int filter_frame(AVFilterLink *outlink, AVFrame *buf) buf_out->data[0] = buf_out->extended_data[0] = buf_out->extended_data[s->map[i]]; ret = av_channel_layout_from_mask(&buf_out->ch_layout, 1ULL << channel); - if (ret < 0) + if (ret < 0) { + av_frame_free(&buf_out); return ret; + } return ff_filter_frame(ctx->outputs[i], buf_out); }