Browse Source

avfilter/af_anlmdn: add support for commands

tags/n4.2
Paul B Mahol 6 years ago
parent
commit
97ddc5d1f7
2 changed files with 38 additions and 0 deletions
  1. +13
    -0
      doc/filters.texi
  2. +25
    -0
      libavfilter/af_anlmdn.c

+ 13
- 0
doc/filters.texi View File

@@ -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.


+ 25
- 0
libavfilter/af_anlmdn.c View File

@@ -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,
};

Loading…
Cancel
Save