avfilter/af_anlmdn: add support for commands

This commit is contained in:
Paul B Mahol 2019-06-03 14:14:37 +02:00
parent 0b7bfa8ad7
commit 97ddc5d1f7
2 changed files with 38 additions and 0 deletions

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.

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