X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavfilter%2Faf_crossfeed.c;h=c819ca59a78bfe65b942b1696f0791f849f397c5;hb=6e1913a02e6fffa56b597a4a6e6a1f3fd6aca72e;hp=a0af28043260087ce5496241ce6b631d4267e7cd;hpb=217ad40aef9eeeff4e805dec3e980fb16aec3345;p=ffmpeg diff --git a/libavfilter/af_crossfeed.c b/libavfilter/af_crossfeed.c index a0af2804326..c819ca59a78 100644 --- a/libavfilter/af_crossfeed.c +++ b/libavfilter/af_crossfeed.c @@ -17,6 +17,7 @@ */ #include "libavutil/channel_layout.h" +#include "libavutil/ffmath.h" #include "libavutil/opt.h" #include "avfilter.h" #include "audio.h" @@ -57,7 +58,7 @@ static int config_input(AVFilterLink *inlink) { AVFilterContext *ctx = inlink->dst; CrossfeedContext *s = ctx->priv; - double A = exp(s->strength * -30 / 40 * log(10.)); + double A = ff_exp10(s->strength * -30 / 40); double w0 = 2 * M_PI * (1. - s->range) * 2100 / inlink->sample_rate; double alpha; @@ -118,8 +119,13 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in) s->o2 = s->o1; s->o1 = oside; - dst[0] = (mid + oside) * level_out; - dst[1] = (mid - oside) * level_out; + if (ctx->is_disabled) { + dst[0] = src[0]; + dst[1] = src[1]; + } else { + dst[0] = (mid + oside) * level_out; + dst[1] = (mid - oside) * level_out; + } } if (out != in) @@ -166,4 +172,5 @@ AVFilter ff_af_crossfeed = { .priv_class = &crossfeed_class, .inputs = inputs, .outputs = outputs, + .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL, };