aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2019-06-03 14:14:37 +0200
committerPaul B Mahol <onemda@gmail.com>2019-06-03 14:20:19 +0200
commit97ddc5d1f741ed246fd81234a4ec3d3ef7038593 (patch)
tree1b6c1422c8e342cd1b3855049ccfa8c1f2a36e8d
parent0b7bfa8ad79e483fd81fc006b35c4ef86990d46f (diff)
downloadffmpeg-97ddc5d1f741ed246fd81234a4ec3d3ef7038593.tar.gz
avfilter/af_anlmdn: add support for commands
-rw-r--r--doc/filters.texi13
-rw-r--r--libavfilter/af_anlmdn.c25
2 files changed, 38 insertions, 0 deletions
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
+@subsection Commands
+
+This filter supports the following commands:
+@table @option
+@item s
+Change denoise strength. Argument is single float number.
+Syntax for the command is : "@var{s}"
+
+@item o
+Change output mode.
+Syntax for the command is : "i", "o" or "n" string.
+@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,
};