FFmpeg
Data Structures | Macros | Enumerations | Functions | Variables
af_afftdn.c File Reference
#include <float.h>
#include "libavutil/avstring.h"
#include "libavutil/channel_layout.h"
#include "libavutil/opt.h"
#include "libavutil/tx.h"
#include "avfilter.h"
#include "audio.h"
#include "formats.h"
#include "filters.h"

Go to the source code of this file.

Data Structures

struct  DeNoiseChannel
 
struct  AudioFFTDeNoiseContext
 

Macros

#define C   (M_LN10 * 0.1)
 
#define SOLVE_SIZE   (5)
 
#define NB_PROFILE_BANDS   (15)
 
#define OFFSET(x)   offsetof(AudioFFTDeNoiseContext, x)
 
#define AF   AV_OPT_FLAG_AUDIO_PARAM|AV_OPT_FLAG_FILTERING_PARAM
 
#define AFR   AV_OPT_FLAG_AUDIO_PARAM|AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_RUNTIME_PARAM
 

Enumerations

enum  SampleNoiseModes { SAMPLE_NONE, SAMPLE_START, SAMPLE_STOP, NB_SAMPLEMODES }
 
enum  OutModes {
  IN_MODE, OUT_MODE, NOISE_MODE, NB_MODES,
  IN_MODE, OUT_MODE, NOISE_MODE, NB_MODES,
  IN_MODE, DESIRED_MODE, OUT_MODE, NOISE_MODE,
  NB_OMODES, IN_MODE, OUT_MODE, ESS_MODE,
  NB_MODES
}
 
enum  NoiseLinkType {
  NONE_LINK, MIN_LINK, MAX_LINK, AVERAGE_LINK,
  NB_LINK
}
 
enum  NoiseType {
  WHITE_NOISE, VINYL_NOISE, SHELLAC_NOISE, CUSTOM_NOISE,
  NB_NOISE
}
 

Functions

 AVFILTER_DEFINE_CLASS (afftdn)
 
static double get_band_noise (AudioFFTDeNoiseContext *s, int band, double a, double b, double c)
 
static void factor (double *array, int size)
 
static void solve (double *matrix, double *vector, int size)
 
static double process_get_band_noise (AudioFFTDeNoiseContext *s, DeNoiseChannel *dnch, int band)
 
static double limit_gain (double a, double b)
 
static void spectral_flatness (AudioFFTDeNoiseContext *s, const double *const spectral, double floor, int len, double *rnum, double *rden)
 
static void set_parameters (AudioFFTDeNoiseContext *s, DeNoiseChannel *dnch, int update_var, int update_auto_var)
 
static double floor_offset (const double *S, int size, double mean)
 
static void process_frame (AVFilterContext *ctx, AudioFFTDeNoiseContext *s, DeNoiseChannel *dnch, AVComplexFloat *fft_data, double *prior, double *prior_band_excit, int track_noise)
 
static double freq2bark (double x)
 
static int get_band_centre (AudioFFTDeNoiseContext *s, int band)
 
static int get_band_edge (AudioFFTDeNoiseContext *s, int band)
 
static void set_band_parameters (AudioFFTDeNoiseContext *s, DeNoiseChannel *dnch)
 
static void read_custom_noise (AudioFFTDeNoiseContext *s, int ch)
 
static void reduce_mean (double *band_noise)
 
static int config_input (AVFilterLink *inlink)
 
static void init_sample_noise (DeNoiseChannel *dnch)
 
static void sample_noise_block (AudioFFTDeNoiseContext *s, DeNoiseChannel *dnch, AVFrame *in, int ch)
 
static void finish_sample_noise (AudioFFTDeNoiseContext *s, DeNoiseChannel *dnch, double *sample_noise)
 
static void set_noise_profile (AudioFFTDeNoiseContext *s, DeNoiseChannel *dnch, double *sample_noise)
 
static int filter_channel (AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs)
 
static int output_frame (AVFilterLink *inlink, AVFrame *in)
 
static int activate (AVFilterContext *ctx)
 
static av_cold void uninit (AVFilterContext *ctx)
 
static int process_command (AVFilterContext *ctx, const char *cmd, const char *args, char *res, int res_len, int flags)
 

Variables

static const AVOption afftdn_options []
 
static const AVFilterPad inputs []
 
static const AVFilterPad outputs []
 
const AVFilter ff_af_afftdn
 

Macro Definition Documentation

◆ C

#define C   (M_LN10 * 0.1)

Definition at line 32 of file af_afftdn.c.

◆ SOLVE_SIZE

#define SOLVE_SIZE   (5)

Definition at line 33 of file af_afftdn.c.

◆ NB_PROFILE_BANDS

#define NB_PROFILE_BANDS   (15)

Definition at line 34 of file af_afftdn.c.

◆ OFFSET

#define OFFSET (   x)    offsetof(AudioFFTDeNoiseContext, x)

Definition at line 158 of file af_afftdn.c.

◆ AF

Definition at line 159 of file af_afftdn.c.

◆ AFR

Definition at line 160 of file af_afftdn.c.

Enumeration Type Documentation

◆ SampleNoiseModes

Enumerator
SAMPLE_NONE 
SAMPLE_START 
SAMPLE_STOP 
NB_SAMPLEMODES 

Definition at line 36 of file af_afftdn.c.

◆ OutModes

enum OutModes
Enumerator
IN_MODE 
OUT_MODE 
NOISE_MODE 
NB_MODES 
IN_MODE 
OUT_MODE 
NOISE_MODE 
NB_MODES 
IN_MODE 
DESIRED_MODE 
OUT_MODE 
NOISE_MODE 
NB_OMODES 
IN_MODE 
OUT_MODE 
ESS_MODE 
NB_MODES 

Definition at line 43 of file af_afftdn.c.

◆ NoiseLinkType

Enumerator
NONE_LINK 
MIN_LINK 
MAX_LINK 
AVERAGE_LINK 
NB_LINK 

Definition at line 50 of file af_afftdn.c.

◆ NoiseType

enum NoiseType
Enumerator
WHITE_NOISE 
VINYL_NOISE 
SHELLAC_NOISE 
CUSTOM_NOISE 
NB_NOISE 

Definition at line 58 of file af_afftdn.c.

Function Documentation

◆ AVFILTER_DEFINE_CLASS()

AVFILTER_DEFINE_CLASS ( afftdn  )

◆ get_band_noise()

static double get_band_noise ( AudioFFTDeNoiseContext s,
int  band,
double  a,
double  b,
double  c 
)
static

Definition at line 219 of file af_afftdn.c.

Referenced by config_input().

◆ factor()

static void factor ( double array,
int  size 
)
static

Definition at line 235 of file af_afftdn.c.

Referenced by config_input().

◆ solve()

static void solve ( double matrix,
double vector,
int  size 
)
static

Definition at line 249 of file af_afftdn.c.

Referenced by process_get_band_noise(), and set_noise_profile().

◆ process_get_band_noise()

static double process_get_band_noise ( AudioFFTDeNoiseContext s,
DeNoiseChannel dnch,
int  band 
)
static

Definition at line 268 of file af_afftdn.c.

Referenced by set_band_parameters(), and set_parameters().

◆ limit_gain()

static double limit_gain ( double  a,
double  b 
)
static

Definition at line 298 of file af_afftdn.c.

Referenced by process_frame().

◆ spectral_flatness()

static void spectral_flatness ( AudioFFTDeNoiseContext s,
const double *const  spectral,
double  floor,
int  len,
double rnum,
double rden 
)
static

Definition at line 307 of file af_afftdn.c.

Referenced by process_frame().

◆ set_parameters()

static void set_parameters ( AudioFFTDeNoiseContext s,
DeNoiseChannel dnch,
int  update_var,
int  update_auto_var 
)
static

Definition at line 550 of file af_afftdn.c.

Referenced by config_input(), output_frame(), process_command(), and process_frame().

◆ floor_offset()

static double floor_offset ( const double S,
int  size,
double  mean 
)
static

Definition at line 335 of file af_afftdn.c.

Referenced by process_frame().

◆ process_frame()

static void process_frame ( AVFilterContext ctx,
AudioFFTDeNoiseContext s,
DeNoiseChannel dnch,
AVComplexFloat fft_data,
double prior,
double prior_band_excit,
int  track_noise 
)
static

Definition at line 348 of file af_afftdn.c.

Referenced by filter_channel().

◆ freq2bark()

static double freq2bark ( double  x)
static

Definition at line 457 of file af_afftdn.c.

Referenced by config_input().

◆ get_band_centre()

static int get_band_centre ( AudioFFTDeNoiseContext s,
int  band 
)
static

Definition at line 464 of file af_afftdn.c.

Referenced by set_band_parameters().

◆ get_band_edge()

static int get_band_edge ( AudioFFTDeNoiseContext s,
int  band 
)
static

Definition at line 472 of file af_afftdn.c.

Referenced by config_input().

◆ set_band_parameters()

static void set_band_parameters ( AudioFFTDeNoiseContext s,
DeNoiseChannel dnch 
)
static

Definition at line 485 of file af_afftdn.c.

Referenced by set_parameters().

◆ read_custom_noise()

static void read_custom_noise ( AudioFFTDeNoiseContext s,
int  ch 
)
static

Definition at line 515 of file af_afftdn.c.

Referenced by config_input().

◆ reduce_mean()

static void reduce_mean ( double band_noise)
static

Definition at line 590 of file af_afftdn.c.

Referenced by config_input(), and set_noise_profile().

◆ config_input()

static int config_input ( AVFilterLink inlink)
static

Definition at line 602 of file af_afftdn.c.

◆ init_sample_noise()

static void init_sample_noise ( DeNoiseChannel dnch)
static

Definition at line 850 of file af_afftdn.c.

Referenced by output_frame().

◆ sample_noise_block()

static void sample_noise_block ( AudioFFTDeNoiseContext s,
DeNoiseChannel dnch,
AVFrame in,
int  ch 
)
static

Definition at line 860 of file af_afftdn.c.

Referenced by output_frame().

◆ finish_sample_noise()

static void finish_sample_noise ( AudioFFTDeNoiseContext s,
DeNoiseChannel dnch,
double sample_noise 
)
static

Definition at line 916 of file af_afftdn.c.

Referenced by output_frame().

◆ set_noise_profile()

static void set_noise_profile ( AudioFFTDeNoiseContext s,
DeNoiseChannel dnch,
double sample_noise 
)
static

Definition at line 935 of file af_afftdn.c.

Referenced by output_frame().

◆ filter_channel()

static int filter_channel ( AVFilterContext ctx,
void *  arg,
int  jobnr,
int  nb_jobs 
)
static

Definition at line 972 of file af_afftdn.c.

Referenced by output_frame().

◆ output_frame()

static int output_frame ( AVFilterLink inlink,
AVFrame in 
)
static

Definition at line 1009 of file af_afftdn.c.

Referenced by activate().

◆ activate()

static int activate ( AVFilterContext ctx)
static

Definition at line 1141 of file af_afftdn.c.

◆ uninit()

static av_cold void uninit ( AVFilterContext ctx)
static

Definition at line 1168 of file af_afftdn.c.

◆ process_command()

static int process_command ( AVFilterContext ctx,
const char *  cmd,
const char *  args,
char *  res,
int  res_len,
int  flags 
)
static

Definition at line 1204 of file af_afftdn.c.

Variable Documentation

◆ afftdn_options

const AVOption afftdn_options[]
static

Definition at line 162 of file af_afftdn.c.

◆ inputs

const AVFilterPad inputs[]
static
Initial value:
= {
{
.name = "default",
.config_props = config_input,
},
}

Definition at line 1230 of file af_afftdn.c.

◆ outputs

const AVFilterPad outputs[]
static
Initial value:
= {
{
.name = "default",
},
}

Definition at line 1238 of file af_afftdn.c.

◆ ff_af_afftdn

const AVFilter ff_af_afftdn
Initial value:
= {
.name = "afftdn",
.description = NULL_IF_CONFIG_SMALL("Denoise audio samples using FFT."),
.priv_size = sizeof(AudioFFTDeNoiseContext),
.priv_class = &afftdn_class,
.process_command = process_command,
}

Definition at line 1245 of file af_afftdn.c.

AV_SAMPLE_FMT_FLTP
@ AV_SAMPLE_FMT_FLTP
float, planar
Definition: samplefmt.h:66
activate
static int activate(AVFilterContext *ctx)
Definition: af_afftdn.c:1141
inputs
static const AVFilterPad inputs[]
Definition: af_afftdn.c:1230
FILTER_SINGLE_SAMPLEFMT
#define FILTER_SINGLE_SAMPLEFMT(sample_fmt_)
Definition: internal.h:183
config_input
static int config_input(AVFilterLink *inlink)
Definition: af_afftdn.c:602
AVMEDIA_TYPE_AUDIO
@ AVMEDIA_TYPE_AUDIO
Definition: avutil.h:202
AudioFFTDeNoiseContext
Definition: af_afftdn.c:105
FILTER_INPUTS
#define FILTER_INPUTS(array)
Definition: internal.h:190
NULL_IF_CONFIG_SMALL
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification.
Definition: internal.h:117
outputs
static const AVFilterPad outputs[]
Definition: af_afftdn.c:1238
uninit
static av_cold void uninit(AVFilterContext *ctx)
Definition: af_afftdn.c:1168
process_command
static int process_command(AVFilterContext *ctx, const char *cmd, const char *args, char *res, int res_len, int flags)
Definition: af_afftdn.c:1204
AVFILTER_FLAG_SLICE_THREADS
#define AVFILTER_FLAG_SLICE_THREADS
The filter supports multithreading by splitting frames into multiple parts and processing them concur...
Definition: avfilter.h:127
FILTER_OUTPUTS
#define FILTER_OUTPUTS(array)
Definition: internal.h:191
AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL
#define AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL
Same as AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC, except that the filter will have its filter_frame() c...
Definition: avfilter.h:160