[FFmpeg-cvslog] avfilter/af_anlmdn: add support for commands

Paul B Mahol git at videolan.org
Mon Jun 3 15:21:36 EEST 2019


ffmpeg | branch: master | Paul B Mahol <onemda at gmail.com> | Mon Jun  3 14:14:37 2019 +0200| [97ddc5d1f741ed246fd81234a4ec3d3ef7038593] | committer: Paul B Mahol

avfilter/af_anlmdn: add support for commands

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

 doc/filters.texi        | 13 +++++++++++++
 libavfilter/af_anlmdn.c | 25 +++++++++++++++++++++++++
 2 files changed, 38 insertions(+)

diff --git a/doc/filters.texi b/doc/filters.texi
index 926f2717ec..5db8e0302f 100644
--- a/doc/filters.texi
+++ b/doc/filters.texi
@@ -1806,6 +1806,19 @@ Default value is @var{o}.
 Set smooth factor. Default value is @var{11}. Allowed range is from @var{1} to @var{15}.
 @end table
 
+ at subsection Commands
+
+This filter supports the following commands:
+ at table @option
+ at item s
+Change denoise strength. Argument is single float number.
+Syntax for the command is : "@var{s}"
+
+ at item o
+Change output mode.
+Syntax for the command is : "i", "o" or "n" string.
+ at end table
+
 @section anull
 
 Pass the audio source unchanged to the output.
diff --git a/libavfilter/af_anlmdn.c b/libavfilter/af_anlmdn.c
index 93b76e0dff..b5bc94b4eb 100644
--- a/libavfilter/af_anlmdn.c
+++ b/libavfilter/af_anlmdn.c
@@ -22,6 +22,7 @@
 
 #include "libavutil/avassert.h"
 #include "libavutil/audio_fifo.h"
+#include "libavutil/avstring.h"
 #include "libavutil/opt.h"
 #include "avfilter.h"
 #include "audio.h"
@@ -338,6 +339,29 @@ static av_cold void uninit(AVFilterContext *ctx)
     av_frame_free(&s->cache);
 }
 
+static int process_command(AVFilterContext *ctx, const char *cmd, const char *args,
+                           char *res, int res_len, int flags)
+{
+    AudioNLMeansContext *s = ctx->priv;
+
+    if (!strcmp(cmd, "s")) {
+        float a;
+
+        if (av_sscanf(args, "%f", &a) == 1)
+            s->a = av_clipf(a, 0.00001, 10);
+    } else if (!strcmp(cmd, "o")) {
+        if (!strcmp(args, "i")) {
+            s->om = IN_MODE;
+        } else if (!strcmp(args, "o")) {
+            s->om = OUT_MODE;
+        } else if (!strcmp(args, "n")) {
+            s->om = NOISE_MODE;
+        }
+    }
+
+    return 0;
+}
+
 static const AVFilterPad inputs[] = {
     {
         .name         = "default",
@@ -366,6 +390,7 @@ AVFilter ff_af_anlmdn = {
     .uninit        = uninit,
     .inputs        = inputs,
     .outputs       = outputs,
+    .process_command = process_command,
     .flags         = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL |
                      AVFILTER_FLAG_SLICE_THREADS,
 };



More information about the ffmpeg-cvslog mailing list