[FFmpeg-cvslog] avfilter/af_anlmdn: rework how denoising strength is used

Paul B Mahol git at videolan.org
Sat Jan 12 17:17:28 EET 2019


ffmpeg | branch: master | Paul B Mahol <onemda at gmail.com> | Sat Jan 12 15:33:39 2019 +0100| [f4fd8ef725a805cfc8fd695f283b8bfe9bef1b5a] | committer: Paul B Mahol

avfilter/af_anlmdn: rework how denoising strength is used

Make into account patch size.

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

 doc/filters.texi        | 2 +-
 libavfilter/af_anlmdn.c | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/doc/filters.texi b/doc/filters.texi
index 85d8f6c85b..6a336a71f4 100644
--- a/doc/filters.texi
+++ b/doc/filters.texi
@@ -1762,7 +1762,7 @@ The filter accepts the following options.
 
 @table @option
 @item s
-Set denoising strength. Allowed range is from 1 to 9999. Default value is 1.
+Set denoising strength. Allowed range is from 0.00001 to 10. Default value is 0.00001.
 
 @item p
 Set patch radius duration. Allowed range is from 1 to 100 milliseconds.
diff --git a/libavfilter/af_anlmdn.c b/libavfilter/af_anlmdn.c
index 7cd6f2c477..43ceab8e4a 100644
--- a/libavfilter/af_anlmdn.c
+++ b/libavfilter/af_anlmdn.c
@@ -66,7 +66,7 @@ typedef struct AudioNLMeansContext {
 #define AF AV_OPT_FLAG_AUDIO_PARAM|AV_OPT_FLAG_FILTERING_PARAM
 
 static const AVOption anlmdn_options[] = {
-    { "s", "set denoising strength", OFFSET(a),  AV_OPT_TYPE_FLOAT,    {.dbl=1},       1,   9999, AF },
+    { "s", "set denoising strength", OFFSET(a),  AV_OPT_TYPE_FLOAT,    {.dbl=0.00001},0.00001, 10, AF },
     { "p", "set patch duration",     OFFSET(pd), AV_OPT_TYPE_DURATION, {.i64=2000}, 1000, 100000, AF },
     { "r", "set research duration",  OFFSET(rd), AV_OPT_TYPE_DURATION, {.i64=6000}, 2000, 300000, AF },
     { NULL }
@@ -186,7 +186,7 @@ static int filter_channel(AVFilterContext *ctx, void *arg, int ch, int nb_jobs)
     const int K = s->K;
     const float *f = (const float *)(s->in->extended_data[ch]) + K;
     float *cache = (float *)s->cache->extended_data[ch];
-    const float sw = 32768.f / s->a;
+    const float sw = (65536.f / (4 * K + 2)) / sqrtf(s->a);
     float *dst = (float *)out->extended_data[ch] + s->offset;
 
     for (int i = S; i < s->H + S; i++) {



More information about the ffmpeg-cvslog mailing list