avfilter: add audio denoising (afftdn) filter

This commit is contained in:
Paul B Mahol 2018-09-17 17:41:56 +02:00
parent e294b5cf64
commit efb65abedf
7 changed files with 1518 additions and 1 deletions

View File

@ -31,6 +31,7 @@ version <next>:
- Block-Matching 3d (bm3d) denoising filter
- acrossover filter
- ilbc decoder
- audio denoiser as afftdn filter
version 4.0:

3
configure vendored
View File

@ -3339,6 +3339,8 @@ libssh_protocol_deps="libssh"
libtls_conflict="openssl gnutls mbedtls"
# filters
afftdn_filter_deps="avcodec"
afftdn_filter_select="fft"
afftfilt_filter_deps="avcodec"
afftfilt_filter_select="fft"
afir_filter_deps="avcodec"
@ -6857,6 +6859,7 @@ done
enabled zlib && add_cppflags -DZLIB_CONST
# conditional library dependencies, in any order
enabled afftdn_filter && prepend avfilter_deps "avcodec"
enabled afftfilt_filter && prepend avfilter_deps "avcodec"
enabled afir_filter && prepend avfilter_deps "avcodec"
enabled amovie_filter && prepend avfilter_deps "avformat avcodec"

View File

@ -974,6 +974,96 @@ afade=t=out:st=875:d=25
@end example
@end itemize
@section afftdn
Denoise audio samples with FFT.
A description of the accepted parameters follows.
@table @option
@item nr
Set the noise reduction in dB, allowed range is 0.01 to 97.
Default value is 12 dB.
@item nf
Set the noise floor in dB, allowed range is -80 to -20.
Default value is -50 dB.
@item nt
Set the noise type.
It accepts the following values:
@table @option
@item w
Select white noise.
@item v
Select vinyl noise.
@item s
Select shellac noise.
@item c
Select custom noise, defined in @code{bn} option.
Default value is white noise.
@end table
@item bn
Set custom band noise for every one of 15 bands.
Bands are separated by ' ' or '|'.
@item rf
Set the residual floor in dB, allowed range is -80 to -20.
Default value is -38 dB.
@item tn
Enable noise tracking. By default is disabled.
With this enabled, noise floor is automatically adjusted.
@item tr
Enable residual tracking. By default is disabled.
@item om
Set the output mode.
It accepts the following values:
@table @option
@item i
Pass input unchanged.
@item o
Pass noise filtered out.
@item n
Pass only noise.
Default value is @var{o}.
@end table
@end table
@subsection Commands
This filter supports the following commands:
@table @option
@item sample_noise, sn
Start or stop measuring noise profile.
Syntax for the command is : "start" or "stop" string.
After measuring noise profile is stopped it will be
automatically applied in filtering.
@item noise_reduction, nr
Change noise reduction. Argument is single float number.
Syntax for the command is : "@var{noise_reduction}"
@item noise_floor, nf
Change noise floor. Argument is single float number.
Syntax for the command is : "@var{noise_floor}"
@item output_mode, om
Change output mode operation.
Syntax for the command is : "i", "o" or "n" string.
@end table
@section afftfilt
Apply arbitrary expressions to samples in frequency domain.

View File

@ -46,6 +46,7 @@ OBJS-$(CONFIG_AECHO_FILTER) += af_aecho.o
OBJS-$(CONFIG_AEMPHASIS_FILTER) += af_aemphasis.o
OBJS-$(CONFIG_AEVAL_FILTER) += aeval.o
OBJS-$(CONFIG_AFADE_FILTER) += af_afade.o
OBJS-$(CONFIG_AFFTDN_FILTER) += af_afftdn.o
OBJS-$(CONFIG_AFFTFILT_FILTER) += af_afftfilt.o
OBJS-$(CONFIG_AFIR_FILTER) += af_afir.o
OBJS-$(CONFIG_AFORMAT_FILTER) += af_aformat.o

1421
libavfilter/af_afftdn.c Normal file

File diff suppressed because it is too large Load Diff

View File

@ -39,6 +39,7 @@ extern AVFilter ff_af_aecho;
extern AVFilter ff_af_aemphasis;
extern AVFilter ff_af_aeval;
extern AVFilter ff_af_afade;
extern AVFilter ff_af_afftdn;
extern AVFilter ff_af_afftfilt;
extern AVFilter ff_af_afir;
extern AVFilter ff_af_aformat;

View File

@ -30,7 +30,7 @@
#include "libavutil/version.h"
#define LIBAVFILTER_VERSION_MAJOR 7
#define LIBAVFILTER_VERSION_MINOR 32
#define LIBAVFILTER_VERSION_MINOR 33
#define LIBAVFILTER_VERSION_MICRO 100
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \