[FFmpeg-cvslog] avfilter/af_afir: remove again option, merge it with gtype

Paul B Mahol git at videolan.org
Wed Oct 10 21:07:25 EEST 2018


ffmpeg | branch: master | Paul B Mahol <onemda at gmail.com> | Wed Oct 10 19:55:30 2018 +0200| [7a6d88ee6269666e5676a37a75bde231a6508e28] | committer: Paul B Mahol

avfilter/af_afir: remove again option, merge it with gtype

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=7a6d88ee6269666e5676a37a75bde231a6508e28
---

 doc/filters.texi      |  9 ++++---
 libavfilter/af_afir.c | 67 ++++++++++++++++++++++++++-------------------------
 libavfilter/af_afir.h |  1 -
 3 files changed, 39 insertions(+), 38 deletions(-)

diff --git a/doc/filters.texi b/doc/filters.texi
index ceeee0e785..c327b2c22b 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.
 
- at 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
+ at 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 b2d158c17e..244da3ab4c 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 ecc0d60641..7d4f32eaeb 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;



More information about the ffmpeg-cvslog mailing list