From eea69a9f250e565640f1dc69b285a4d27668f67b Mon Sep 17 00:00:00 2001 From: Paul B Mahol Date: Wed, 6 Sep 2017 11:46:24 +0200 Subject: avfilter/af_dcshift: add direct path Signed-off-by: Paul B Mahol --- libavfilter/af_dcshift.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'libavfilter/af_dcshift.c') diff --git a/libavfilter/af_dcshift.c b/libavfilter/af_dcshift.c index 7332c12..2ca2d07 100644 --- a/libavfilter/af_dcshift.c +++ b/libavfilter/af_dcshift.c @@ -90,11 +90,16 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in) int i, j; double dcshift = s->dcshift; - if (!out) { - av_frame_free(&in); - return AVERROR(ENOMEM); + if (av_frame_is_writable(in)) { + out = in; + } else { + out = ff_get_audio_buffer(inlink, in->nb_samples); + if (!out) { + av_frame_free(&in); + return AVERROR(ENOMEM); + } + av_frame_copy_props(out, in); } - av_frame_copy_props(out, in); if (s->limitergain > 0) { for (i = 0; i < inlink->channels; i++) { @@ -134,7 +139,8 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in) } } - av_frame_free(&in); + if (out != in) + av_frame_free(&in); return ff_filter_frame(outlink, out); } static const AVFilterPad dcshift_inputs[] = { -- cgit v1.1