avfilter/af_anlms: add support for commands

This commit is contained in:
Paul B Mahol 2019-10-08 11:51:20 +02:00
parent ffb32d35ee
commit 6023b9fbfe
2 changed files with 22 additions and 1 deletions

View File

@ -1870,12 +1870,16 @@ Default value is @var{o}.
@itemize
@item
One of many usages of this filter is noise reduction, input audio is filtered
with same samples that are delayed by fixed ammount, one such example for stereo audio is:
with same samples that are delayed by fixed amount, one such example for stereo audio is:
@example
asplit[a][b],[a]adelay=32S|32S[a],[b][a]anlms=order=128:leakage=0.0005:mu=.5:out_mode=o
@end example
@end itemize
@subsection Commands
This filter supports the same commands as options, excluding option @code{order}.
@section anull
Pass the audio source unchanged to the output.

View File

@ -281,6 +281,22 @@ static av_cold int init(AVFilterContext *ctx)
return 0;
}
static int process_command(AVFilterContext *ctx, const char *cmd, const char *args,
char *res, int res_len, int flags)
{
AudioNLMSContext *s = ctx->priv;
int ret;
if ( !strcmp(cmd, "mu") || !strcmp(cmd, "eps")
|| !strcmp(cmd, "leakage") || !strcmp(cmd, "out_mode")) {
ret = av_opt_set(s, cmd, args, 0);
} else {
ret = AVERROR(ENOSYS);
}
return ret;
}
static av_cold void uninit(AVFilterContext *ctx)
{
AudioNLMSContext *s = ctx->priv;
@ -325,4 +341,5 @@ AVFilter ff_af_anlms = {
.inputs = inputs,
.outputs = outputs,
.flags = AVFILTER_FLAG_SLICE_THREADS,
.process_command = process_command,
};