X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavfilter%2Faf_stereowiden.c;h=1fbb635841e96a065f9397801a889a10ed2ef48b;hb=a04ad248a05e7b613abe09b3bb067f555108d794;hp=ef16fcec73b8d4c76ad9074073319f869fd4b3b3;hpb=39278ff0de5b5e3397c22538978bffbb38ee099b;p=ffmpeg diff --git a/libavfilter/af_stereowiden.c b/libavfilter/af_stereowiden.c index ef16fcec73b..1fbb635841e 100644 --- a/libavfilter/af_stereowiden.c +++ b/libavfilter/af_stereowiden.c @@ -39,13 +39,14 @@ typedef struct StereoWidenContext { } StereoWidenContext; #define OFFSET(x) offsetof(StereoWidenContext, x) -#define A AV_OPT_FLAG_AUDIO_PARAM|AV_OPT_FLAG_FILTERING_PARAM +#define A AV_OPT_FLAG_AUDIO_PARAM|AV_OPT_FLAG_FILTERING_PARAM +#define AT AV_OPT_FLAG_AUDIO_PARAM|AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_RUNTIME_PARAM static const AVOption stereowiden_options[] = { { "delay", "set delay time", OFFSET(delay), AV_OPT_TYPE_FLOAT, {.dbl=20}, 1, 100, A }, - { "feedback", "set feedback gain", OFFSET(feedback), AV_OPT_TYPE_FLOAT, {.dbl=.3}, 0, 0.9, A }, - { "crossfeed", "set cross feed", OFFSET(crossfeed), AV_OPT_TYPE_FLOAT, {.dbl=.3}, 0, 0.8, A }, - { "drymix", "set dry-mix", OFFSET(drymix), AV_OPT_TYPE_FLOAT, {.dbl=.8}, 0, 1.0, A }, + { "feedback", "set feedback gain", OFFSET(feedback), AV_OPT_TYPE_FLOAT, {.dbl=.3}, 0, 0.9, AT }, + { "crossfeed", "set cross feed", OFFSET(crossfeed), AV_OPT_TYPE_FLOAT, {.dbl=.3}, 0, 0.8, AT }, + { "drymix", "set dry-mix", OFFSET(drymix), AV_OPT_TYPE_FLOAT, {.dbl=.8}, 0, 1.0, AT }, { NULL } }; @@ -113,8 +114,13 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in) if (s->cur == s->buffer + s->length) s->cur = s->buffer; - dst[0] = drymix * left - crossfeed * right - feedback * s->cur[1]; - dst[1] = drymix * right - crossfeed * left - feedback * s->cur[0]; + if (ctx->is_disabled) { + dst[0] = left; + dst[1] = right; + } else { + dst[0] = drymix * left - crossfeed * right - feedback * s->cur[1]; + dst[1] = drymix * right - crossfeed * left - feedback * s->cur[0]; + } s->cur[0] = left; s->cur[1] = right; @@ -150,7 +156,7 @@ static const AVFilterPad outputs[] = { { NULL } }; -AVFilter ff_af_stereowiden = { +const AVFilter ff_af_stereowiden = { .name = "stereowiden", .description = NULL_IF_CONFIG_SMALL("Apply stereo widening effect."), .query_formats = query_formats, @@ -159,4 +165,6 @@ AVFilter ff_af_stereowiden = { .uninit = uninit, .inputs = inputs, .outputs = outputs, + .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL, + .process_command = ff_filter_process_command, };