[FFmpeg-cvslog] avfilter/af_anlms: improve documentation and extend option
Paul B Mahol
git at videolan.org
Mon May 1 21:09:34 EEST 2023
ffmpeg | branch: master | Paul B Mahol <onemda at gmail.com> | Mon May 1 20:01:50 2023 +0200| [561746591660b456e092324f03d393d6dd9147b1] | committer: Paul B Mahol
avfilter/af_anlms: improve documentation and extend option
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=561746591660b456e092324f03d393d6dd9147b1
---
doc/filters.texi | 7 +++++--
libavfilter/af_anlms.c | 11 +++++++----
2 files changed, 12 insertions(+), 6 deletions(-)
diff --git a/doc/filters.texi b/doc/filters.texi
index 48b321b621..a63304ccd9 100644
--- a/doc/filters.texi
+++ b/doc/filters.texi
@@ -2674,10 +2674,13 @@ Pass the 1st input.
Pass the 2nd input.
@item o
-Pass filtered samples.
+Pass difference between desired, 2nd input and error signal estimate.
@item n
-Pass difference between desired and filtered samples.
+Pass difference between input, 1st input and error signal estimate.
+
+ at item e
+Pass error signal estimated samples.
Default value is @var{o}.
@end table
diff --git a/libavfilter/af_anlms.c b/libavfilter/af_anlms.c
index a2c854b0b8..5b412b87cc 100644
--- a/libavfilter/af_anlms.c
+++ b/libavfilter/af_anlms.c
@@ -34,6 +34,7 @@ enum OutModes {
DESIRED_MODE,
OUT_MODE,
NOISE_MODE,
+ ERROR_MODE,
NB_OMODES
};
@@ -73,6 +74,7 @@ static const AVOption anlms_options[] = {
{ "d", "desired", 0, AV_OPT_TYPE_CONST, {.i64=DESIRED_MODE}, 0, 0, AT, "mode" },
{ "o", "output", 0, AV_OPT_TYPE_CONST, {.i64=OUT_MODE}, 0, 0, AT, "mode" },
{ "n", "noise", 0, AV_OPT_TYPE_CONST, {.i64=NOISE_MODE}, 0, 0, AT, "mode" },
+ { "e", "error", 0, AV_OPT_TYPE_CONST, {.i64=ERROR_MODE}, 0, 0, AT, "mode" },
{ NULL }
};
@@ -102,7 +104,7 @@ static float process_sample(AudioNLMSContext *s, float input, float desired,
const int order = s->order;
const float leakage = s->leakage;
const float mu = s->mu;
- const float a = 1.f - leakage * mu;
+ const float a = 1.f - leakage;
float sum, output, e, norm, b;
int offset = *offsetp;
@@ -116,7 +118,7 @@ static float process_sample(AudioNLMSContext *s, float input, float desired,
norm = s->eps + sum;
b = mu * e / norm;
if (s->anlmf)
- b *= 4.f * e * e;
+ b *= e * e;
memcpy(tmp, delay + offset, order * sizeof(float));
@@ -129,8 +131,9 @@ static float process_sample(AudioNLMSContext *s, float input, float desired,
switch (s->output_mode) {
case IN_MODE: output = input; break;
case DESIRED_MODE: output = desired; break;
- case OUT_MODE: /*output = output;*/ break;
- case NOISE_MODE: output = desired - output; break;
+ case OUT_MODE: output = desired - output; break;
+ case NOISE_MODE: output = input - output; break;
+ case ERROR_MODE: break;
}
return output;
}
More information about the ffmpeg-cvslog
mailing list