From: Paul B Mahol Date: Wed, 10 Oct 2018 17:55:30 +0000 (+0200) Subject: avfilter/af_afir: remove again option, merge it with gtype X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=7a6d88ee6269666e5676a37a75bde231a6508e28;p=ffmpeg avfilter/af_afir: remove again option, merge it with gtype --- diff --git a/doc/filters.texi b/doc/filters.texi index ceeee0e7854..c327b2c22b3 100644 --- a/doc/filters.texi +++ b/doc/filters.texi @@ -1173,14 +1173,15 @@ Set wet gain. This sets final output gain. @item length Set Impulse Response filter length. Default is 1, which means whole IR is processed. -@item again -Enable applying gain measured from power of IR. For approach to use for measuring power -of IR see next option. - @item gtype +Enable applying gain measured from power of IR. + Set which approach to use for auto gain measurement. @table @option +@item none +Do not apply any gain. + @item peak select peak gain, very conservative approach. This is default value. diff --git a/libavfilter/af_afir.c b/libavfilter/af_afir.c index b2d158c17e0..244da3ab4cf 100644 --- a/libavfilter/af_afir.c +++ b/libavfilter/af_afir.c @@ -335,38 +335,39 @@ static int convert_coeffs(AVFilterContext *ctx) s->gain = 1; - if (s->again) { - switch (s->gtype) { - case 0: - for (ch = 0; ch < ctx->inputs[1]->channels; ch++) { - float *time = (float *)s->in[1]->extended_data[!s->one2many * ch]; - - for (i = 0; i < s->nb_taps; i++) - power += FFABS(time[i]); - } - s->gain = ctx->inputs[1]->channels / power; - break; - case 1: - for (ch = 0; ch < ctx->inputs[1]->channels; ch++) { - float *time = (float *)s->in[1]->extended_data[!s->one2many * ch]; - - for (i = 0; i < s->nb_taps; i++) - power += time[i]; - } - s->gain = ctx->inputs[1]->channels / power; - break; - case 2: - for (ch = 0; ch < ctx->inputs[1]->channels; ch++) { - float *time = (float *)s->in[1]->extended_data[!s->one2many * ch]; - - for (i = 0; i < s->nb_taps; i++) - power += time[i] * time[i]; - } - s->gain = sqrtf(ch / power); - break; - default: - return AVERROR_BUG; + switch (s->gtype) { + case -1: + /* nothinkg to do */ + break; + case 0: + for (ch = 0; ch < ctx->inputs[1]->channels; ch++) { + float *time = (float *)s->in[1]->extended_data[!s->one2many * ch]; + + for (i = 0; i < s->nb_taps; i++) + power += FFABS(time[i]); + } + s->gain = ctx->inputs[1]->channels / power; + break; + case 1: + for (ch = 0; ch < ctx->inputs[1]->channels; ch++) { + float *time = (float *)s->in[1]->extended_data[!s->one2many * ch]; + + for (i = 0; i < s->nb_taps; i++) + power += time[i]; } + s->gain = ctx->inputs[1]->channels / power; + break; + case 2: + for (ch = 0; ch < ctx->inputs[1]->channels; ch++) { + float *time = (float *)s->in[1]->extended_data[!s->one2many * ch]; + + for (i = 0; i < s->nb_taps; i++) + power += time[i] * time[i]; + } + s->gain = sqrtf(ch / power); + break; + default: + return AVERROR_BUG; } s->gain = FFMIN(s->gain * s->ir_gain, 1.f); @@ -738,8 +739,8 @@ static const AVOption afir_options[] = { { "dry", "set dry gain", OFFSET(dry_gain), AV_OPT_TYPE_FLOAT, {.dbl=1}, 0, 10, AF }, { "wet", "set wet gain", OFFSET(wet_gain), AV_OPT_TYPE_FLOAT, {.dbl=1}, 0, 10, AF }, { "length", "set IR length", OFFSET(length), AV_OPT_TYPE_FLOAT, {.dbl=1}, 0, 1, AF }, - { "again", "enable auto gain", OFFSET(again), AV_OPT_TYPE_BOOL, {.i64=1}, 0, 1, AF }, - { "gtype", "set auto gain type",OFFSET(gtype), AV_OPT_TYPE_INT, {.i64=0}, 0, 2, AF, "gtype" }, + { "gtype", "set IR auto gain type",OFFSET(gtype), AV_OPT_TYPE_INT, {.i64=0}, -1, 2, AF, "gtype" }, + { "none", "without auto gain", 0, AV_OPT_TYPE_CONST, {.i64=-1}, 0, 0, AF, "gtype" }, { "peak", "peak gain", 0, AV_OPT_TYPE_CONST, {.i64=0}, 0, 0, AF, "gtype" }, { "dc", "DC gain", 0, AV_OPT_TYPE_CONST, {.i64=1}, 0, 0, AF, "gtype" }, { "gn", "gain to noise", 0, AV_OPT_TYPE_CONST, {.i64=2}, 0, 0, AF, "gtype" }, diff --git a/libavfilter/af_afir.h b/libavfilter/af_afir.h index ecc0d606417..7d4f32eaebc 100644 --- a/libavfilter/af_afir.h +++ b/libavfilter/af_afir.h @@ -38,7 +38,6 @@ typedef struct AudioFIRContext { float wet_gain; float dry_gain; float length; - int again; int gtype; float ir_gain; int ir_format;