FFmpeg
Data Structures | Macros | Functions | Variables
af_arnndn.c File Reference
#include "libavutil/avassert.h"
#include "libavutil/file_open.h"
#include "libavutil/float_dsp.h"
#include "libavutil/mem_internal.h"
#include "libavutil/opt.h"
#include "libavutil/tx.h"
#include "avfilter.h"
#include "audio.h"
#include "filters.h"
#include "formats.h"

Go to the source code of this file.

Data Structures

struct  DenseLayer
 
struct  GRULayer
 
struct  RNNModel
 
struct  RNNState
 
struct  DenoiseState
 
struct  AudioRNNContext
 
struct  ThreadData
 Used for passing data between threads. More...
 

Macros

#define FRAME_SIZE_SHIFT   2
 
#define FRAME_SIZE   (120<<FRAME_SIZE_SHIFT)
 
#define WINDOW_SIZE   (2*FRAME_SIZE)
 
#define FREQ_SIZE   (FRAME_SIZE + 1)
 
#define PITCH_MIN_PERIOD   60
 
#define PITCH_MAX_PERIOD   768
 
#define PITCH_FRAME_SIZE   960
 
#define PITCH_BUF_SIZE   (PITCH_MAX_PERIOD+PITCH_FRAME_SIZE)
 
#define SQUARE(x)   ((x)*(x))
 
#define NB_BANDS   22
 
#define CEPS_MEM   8
 
#define NB_DELTA_CEPS   6
 
#define NB_FEATURES   (NB_BANDS+3*NB_DELTA_CEPS+2)
 
#define WEIGHTS_SCALE   (1.f/256)
 
#define MAX_NEURONS   128
 
#define ACTIVATION_TANH   0
 
#define ACTIVATION_SIGMOID   1
 
#define ACTIVATION_RELU   2
 
#define Q15ONE   1.0f
 
#define F_ACTIVATION_TANH   0
 
#define F_ACTIVATION_SIGMOID   1
 
#define F_ACTIVATION_RELU   2
 
#define FREE_MAYBE(ptr)   do { if (ptr) free(ptr); } while (0)
 
#define FREE_DENSE(name)
 
#define FREE_GRU(name)
 
#define ALLOC_LAYER(type, name)
 
#define INPUT_VAL(name)
 
#define INPUT_ACTIVATION(name)
 
#define INPUT_ARRAY(name, len)
 
#define INPUT_ARRAY3(name, len0, len1, len2)
 
#define NEW_LINE()
 
#define INPUT_DENSE(name)
 
#define INPUT_GRU(name)
 
#define RNN_MOVE(dst, src, n)   (memmove((dst), (src), (n)*sizeof(*(dst)) + 0*((dst)-(src)) ))
 
#define RNN_CLEAR(dst, n)   (memset((dst), 0, (n)*sizeof(*(dst))))
 
#define RNN_COPY(dst, src, n)   (memcpy((dst), (src), (n)*sizeof(*(dst)) + 0*((dst)-(src)) ))
 
#define INPUT_SIZE   42
 
#define OFFSET(x)   offsetof(AudioRNNContext, x)
 
#define AF   AV_OPT_FLAG_AUDIO_PARAM|AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_RUNTIME_PARAM
 

Functions

static void rnnoise_model_free (RNNModel *model)
 
static int rnnoise_model_from_file (FILE *f, RNNModel **rnn)
 
static int query_formats (AVFilterContext *ctx)
 
static int config_input (AVFilterLink *inlink)
 
static void biquad (float *y, float mem[2], const float *x, const float *b, const float *a, int N)
 
static void forward_transform (DenoiseState *st, AVComplexFloat *out, const float *in)
 
static void inverse_transform (DenoiseState *st, float *out, const AVComplexFloat *in)
 
static void compute_band_energy (float *bandE, const AVComplexFloat *X)
 
static void compute_band_corr (float *bandE, const AVComplexFloat *X, const AVComplexFloat *P)
 
static void frame_analysis (AudioRNNContext *s, DenoiseState *st, AVComplexFloat *X, float *Ex, const float *in)
 
static void frame_synthesis (AudioRNNContext *s, DenoiseState *st, float *out, const AVComplexFloat *y)
 
static void xcorr_kernel (const float *x, const float *y, float sum[4], int len)
 
static float celt_inner_prod (const float *x, const float *y, int N)
 
static void celt_pitch_xcorr (const float *x, const float *y, float *xcorr, int len, int max_pitch)
 
static int celt_autocorr (const float *x, float *ac, const float *window, int overlap, int lag, int n)
 
static void celt_lpc (float *lpc, const float *ac, int p)
 
static void celt_fir5 (const float *x, const float *num, float *y, int N, float *mem)
 
static void pitch_downsample (float *x[], float *x_lp, int len, int C)
 
static void dual_inner_prod (const float *x, const float *y01, const float *y02, int N, float *xy1, float *xy2)
 
static float compute_pitch_gain (float xy, float xx, float yy)
 
static float remove_doubling (float *x, int maxperiod, int minperiod, int N, int *T0_, int prev_period, float prev_gain)
 
static void find_best_pitch (float *xcorr, float *y, int len, int max_pitch, int *best_pitch)
 
static void pitch_search (const float *x_lp, float *y, int len, int max_pitch, int *pitch)
 
static void dct (AudioRNNContext *s, float *out, const float *in)
 
static int compute_frame_features (AudioRNNContext *s, DenoiseState *st, AVComplexFloat *X, AVComplexFloat *P, float *Ex, float *Ep, float *Exp, float *features, const float *in)
 
static void interp_band_gain (float *g, const float *bandE)
 
static void pitch_filter (AVComplexFloat *X, const AVComplexFloat *P, const float *Ex, const float *Ep, const float *Exp, const float *g)
 
static float tansig_approx (float x)
 
static float sigmoid_approx (float x)
 
static void compute_dense (const DenseLayer *layer, float *output, const float *input)
 
static void compute_gru (AudioRNNContext *s, const GRULayer *gru, float *state, const float *input)
 
static void compute_rnn (AudioRNNContext *s, RNNState *rnn, float *gains, float *vad, const float *input)
 
static float rnnoise_channel (AudioRNNContext *s, DenoiseState *st, float *out, const float *in, int disabled)
 
static int rnnoise_channels (AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs)
 
static int filter_frame (AVFilterLink *inlink, AVFrame *in)
 
static int activate (AVFilterContext *ctx)
 
static int open_model (AVFilterContext *ctx, RNNModel **model)
 
static av_cold int init (AVFilterContext *ctx)
 
static void free_model (AVFilterContext *ctx, int n)
 
static int process_command (AVFilterContext *ctx, const char *cmd, const char *args, char *res, int res_len, int flags)
 
static av_cold void uninit (AVFilterContext *ctx)
 
 AVFILTER_DEFINE_CLASS (arnndn)
 

Variables

static const uint8_t eband5ms []
 
static const uint8_t second_check [16] = {0, 0, 3, 2, 3, 2, 5, 2, 3, 2, 3, 2, 5, 2, 3, 2}
 
static const float tansig_table [201]
 
static const AVFilterPad inputs []
 
static const AVOption arnndn_options []
 
const AVFilter ff_af_arnndn
 

Macro Definition Documentation

◆ FRAME_SIZE_SHIFT

#define FRAME_SIZE_SHIFT   2

Definition at line 45 of file af_arnndn.c.

◆ FRAME_SIZE

#define FRAME_SIZE   (120<<FRAME_SIZE_SHIFT)

Definition at line 46 of file af_arnndn.c.

◆ WINDOW_SIZE

#define WINDOW_SIZE   (2*FRAME_SIZE)

Definition at line 47 of file af_arnndn.c.

◆ FREQ_SIZE

#define FREQ_SIZE   (FRAME_SIZE + 1)

Definition at line 48 of file af_arnndn.c.

◆ PITCH_MIN_PERIOD

#define PITCH_MIN_PERIOD   60

Definition at line 50 of file af_arnndn.c.

◆ PITCH_MAX_PERIOD

#define PITCH_MAX_PERIOD   768

Definition at line 51 of file af_arnndn.c.

◆ PITCH_FRAME_SIZE

#define PITCH_FRAME_SIZE   960

Definition at line 52 of file af_arnndn.c.

◆ PITCH_BUF_SIZE

#define PITCH_BUF_SIZE   (PITCH_MAX_PERIOD+PITCH_FRAME_SIZE)

Definition at line 53 of file af_arnndn.c.

◆ SQUARE

#define SQUARE (   x)    ((x)*(x))

Definition at line 55 of file af_arnndn.c.

◆ NB_BANDS

#define NB_BANDS   22

Definition at line 57 of file af_arnndn.c.

◆ CEPS_MEM

#define CEPS_MEM   8

Definition at line 59 of file af_arnndn.c.

◆ NB_DELTA_CEPS

#define NB_DELTA_CEPS   6

Definition at line 60 of file af_arnndn.c.

◆ NB_FEATURES

#define NB_FEATURES   (NB_BANDS+3*NB_DELTA_CEPS+2)

Definition at line 62 of file af_arnndn.c.

◆ WEIGHTS_SCALE

#define WEIGHTS_SCALE   (1.f/256)

Definition at line 64 of file af_arnndn.c.

◆ MAX_NEURONS

#define MAX_NEURONS   128

Definition at line 66 of file af_arnndn.c.

◆ ACTIVATION_TANH

#define ACTIVATION_TANH   0

Definition at line 68 of file af_arnndn.c.

◆ ACTIVATION_SIGMOID

#define ACTIVATION_SIGMOID   1

Definition at line 69 of file af_arnndn.c.

◆ ACTIVATION_RELU

#define ACTIVATION_RELU   2

Definition at line 70 of file af_arnndn.c.

◆ Q15ONE

#define Q15ONE   1.0f

Definition at line 72 of file af_arnndn.c.

◆ F_ACTIVATION_TANH

#define F_ACTIVATION_TANH   0

Definition at line 152 of file af_arnndn.c.

◆ F_ACTIVATION_SIGMOID

#define F_ACTIVATION_SIGMOID   1

Definition at line 153 of file af_arnndn.c.

◆ F_ACTIVATION_RELU

#define F_ACTIVATION_RELU   2

Definition at line 154 of file af_arnndn.c.

◆ FREE_MAYBE

#define FREE_MAYBE (   ptr)    do { if (ptr) free(ptr); } while (0)

◆ FREE_DENSE

#define FREE_DENSE (   name)
Value:
do { \
if (model->name) { \
av_free((void *) model->name->input_weights); \
av_free((void *) model->name->bias); \
av_free((void *) model->name); \
} \
} while (0)

◆ FREE_GRU

#define FREE_GRU (   name)
Value:
do { \
if (model->name) { \
av_free((void *) model->name->input_weights); \
av_free((void *) model->name->recurrent_weights); \
av_free((void *) model->name->bias); \
av_free((void *) model->name); \
} \
} while (0)

◆ ALLOC_LAYER

#define ALLOC_LAYER (   type,
  name 
)
Value:
name = av_calloc(1, sizeof(type)); \
if (!name) { \
rnnoise_model_free(ret); \
return AVERROR(ENOMEM); \
} \
ret->name = name

◆ INPUT_VAL

#define INPUT_VAL (   name)
Value:
do { \
if (fscanf(f, "%d", &in) != 1 || in < 0 || in > 128) { \
rnnoise_model_free(ret); \
return AVERROR(EINVAL); \
} \
name = in; \
} while (0)

◆ INPUT_ACTIVATION

#define INPUT_ACTIVATION (   name)
Value:
do { \
int activation; \
INPUT_VAL(activation); \
switch (activation) { \
break; \
name = ACTIVATION_RELU; \
break; \
default: \
name = ACTIVATION_TANH; \
} \
} while (0)

◆ INPUT_ARRAY

#define INPUT_ARRAY (   name,
  len 
)
Value:
do { \
float *values = av_calloc((len), sizeof(float)); \
if (!values) { \
rnnoise_model_free(ret); \
return AVERROR(ENOMEM); \
} \
name = values; \
for (int i = 0; i < (len); i++) { \
if (fscanf(f, "%d", &in) != 1) { \
rnnoise_model_free(ret); \
return AVERROR(EINVAL); \
} \
values[i] = in; \
} \
} while (0)

◆ INPUT_ARRAY3

#define INPUT_ARRAY3 (   name,
  len0,
  len1,
  len2 
)
Value:
do { \
float *values = av_calloc(FFALIGN((len0), 4) * FFALIGN((len1), 4) * (len2), sizeof(float)); \
if (!values) { \
rnnoise_model_free(ret); \
return AVERROR(ENOMEM); \
} \
name = values; \
for (int k = 0; k < (len0); k++) { \
for (int i = 0; i < (len2); i++) { \
for (int j = 0; j < (len1); j++) { \
if (fscanf(f, "%d", &in) != 1) { \
rnnoise_model_free(ret); \
return AVERROR(EINVAL); \
} \
values[j * (len2) * FFALIGN((len0), 4) + i * FFALIGN((len0), 4) + k] = in; \
} \
} \
} \
} while (0)

◆ NEW_LINE

#define NEW_LINE ( )
Value:
do { \
int c; \
while ((c = fgetc(f)) != EOF) { \
if (c == '\n') \
break; \
} \
} while (0)

◆ INPUT_DENSE

#define INPUT_DENSE (   name)
Value:
do { \
INPUT_VAL(name->nb_inputs); \
INPUT_VAL(name->nb_neurons); \
ret->name ## _size = name->nb_neurons; \
INPUT_ACTIVATION(name->activation); \
NEW_LINE(); \
INPUT_ARRAY(name->input_weights, name->nb_inputs * name->nb_neurons); \
NEW_LINE(); \
INPUT_ARRAY(name->bias, name->nb_neurons); \
NEW_LINE(); \
} while (0)

◆ INPUT_GRU

#define INPUT_GRU (   name)
Value:
do { \
INPUT_VAL(name->nb_inputs); \
INPUT_VAL(name->nb_neurons); \
ret->name ## _size = name->nb_neurons; \
INPUT_ACTIVATION(name->activation); \
NEW_LINE(); \
INPUT_ARRAY3(name->input_weights, name->nb_inputs, name->nb_neurons, 3); \
NEW_LINE(); \
INPUT_ARRAY3(name->recurrent_weights, name->nb_neurons, name->nb_neurons, 3); \
NEW_LINE(); \
INPUT_ARRAY(name->bias, name->nb_neurons * 3); \
NEW_LINE(); \
} while (0)

◆ RNN_MOVE

#define RNN_MOVE (   dst,
  src,
 
)    (memmove((dst), (src), (n)*sizeof(*(dst)) + 0*((dst)-(src)) ))

Definition at line 406 of file af_arnndn.c.

◆ RNN_CLEAR

#define RNN_CLEAR (   dst,
 
)    (memset((dst), 0, (n)*sizeof(*(dst))))

Definition at line 407 of file af_arnndn.c.

◆ RNN_COPY

#define RNN_COPY (   dst,
  src,
 
)    (memcpy((dst), (src), (n)*sizeof(*(dst)) + 0*((dst)-(src)) ))

Definition at line 408 of file af_arnndn.c.

◆ INPUT_SIZE

#define INPUT_SIZE   42

Definition at line 1331 of file af_arnndn.c.

◆ OFFSET

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

Definition at line 1588 of file af_arnndn.c.

◆ AF

Definition at line 1589 of file af_arnndn.c.

Function Documentation

◆ rnnoise_model_free()

static void rnnoise_model_free ( RNNModel model)
static

Definition at line 156 of file af_arnndn.c.

Referenced by free_model(), and rnnoise_model_from_file().

◆ rnnoise_model_from_file()

static int rnnoise_model_from_file ( FILE *  f,
RNNModel **  rnn 
)
static

Definition at line 186 of file af_arnndn.c.

Referenced by open_model().

◆ query_formats()

static int query_formats ( AVFilterContext ctx)
static

Definition at line 329 of file af_arnndn.c.

◆ config_input()

static int config_input ( AVFilterLink inlink)
static

Definition at line 348 of file af_arnndn.c.

Referenced by process_command().

◆ biquad()

static void biquad ( float y,
float  mem[2],
const float x,
const float b,
const float a,
int  N 
)
static

Definition at line 392 of file af_arnndn.c.

Referenced by rnnoise_channel().

◆ forward_transform()

static void forward_transform ( DenoiseState st,
AVComplexFloat out,
const float in 
)
static

Definition at line 410 of file af_arnndn.c.

Referenced by compute_frame_features(), and frame_analysis().

◆ inverse_transform()

static void inverse_transform ( DenoiseState st,
float out,
const AVComplexFloat in 
)
static

Definition at line 425 of file af_arnndn.c.

Referenced by frame_synthesis().

◆ compute_band_energy()

static void compute_band_energy ( float bandE,
const AVComplexFloat X 
)
static

Definition at line 448 of file af_arnndn.c.

Referenced by compute_frame_features(), frame_analysis(), and pitch_filter().

◆ compute_band_corr()

static void compute_band_corr ( float bandE,
const AVComplexFloat X,
const AVComplexFloat P 
)
static

Definition at line 473 of file af_arnndn.c.

Referenced by compute_frame_features().

◆ frame_analysis()

static void frame_analysis ( AudioRNNContext s,
DenoiseState st,
AVComplexFloat X,
float Ex,
const float in 
)
static

Definition at line 498 of file af_arnndn.c.

Referenced by compute_frame_features().

◆ frame_synthesis()

static void frame_synthesis ( AudioRNNContext s,
DenoiseState st,
float out,
const AVComplexFloat y 
)
static

Definition at line 510 of file af_arnndn.c.

Referenced by rnnoise_channel().

◆ xcorr_kernel()

static void xcorr_kernel ( const float x,
const float y,
float  sum[4],
int  len 
)
inlinestatic

Definition at line 527 of file af_arnndn.c.

Referenced by celt_pitch_xcorr().

◆ celt_inner_prod()

static float celt_inner_prod ( const float x,
const float y,
int  N 
)
inlinestatic

Definition at line 596 of file af_arnndn.c.

Referenced by celt_pitch_xcorr(), pitch_search(), and remove_doubling().

◆ celt_pitch_xcorr()

static void celt_pitch_xcorr ( const float x,
const float y,
float xcorr,
int  len,
int  max_pitch 
)
static

Definition at line 607 of file af_arnndn.c.

Referenced by celt_autocorr(), and pitch_search().

◆ celt_autocorr()

static int celt_autocorr ( const float x,
float ac,
const float window,
int  overlap,
int  lag,
int  n 
)
static

Definition at line 628 of file af_arnndn.c.

Referenced by pitch_downsample().

◆ celt_lpc()

static void celt_lpc ( float lpc,
const float ac,
int  p 
)
static

Definition at line 666 of file af_arnndn.c.

Referenced by pitch_downsample().

◆ celt_fir5()

static void celt_fir5 ( const float x,
const float num,
float y,
int  N,
float mem 
)
static

Definition at line 699 of file af_arnndn.c.

Referenced by pitch_downsample().

◆ pitch_downsample()

static void pitch_downsample ( float x[],
float x_lp,
int  len,
int  C 
)
static

Definition at line 742 of file af_arnndn.c.

Referenced by compute_frame_features().

◆ dual_inner_prod()

static void dual_inner_prod ( const float x,
const float y01,
const float y02,
int  N,
float xy1,
float xy2 
)
inlinestatic

Definition at line 784 of file af_arnndn.c.

Referenced by remove_doubling().

◆ compute_pitch_gain()

static float compute_pitch_gain ( float  xy,
float  xx,
float  yy 
)
static

Definition at line 798 of file af_arnndn.c.

Referenced by remove_doubling().

◆ remove_doubling()

static float remove_doubling ( float x,
int  maxperiod,
int  minperiod,
int  N,
int T0_,
int  prev_period,
float  prev_gain 
)
static

Definition at line 804 of file af_arnndn.c.

Referenced by compute_frame_features().

◆ find_best_pitch()

static void find_best_pitch ( float xcorr,
float y,
int  len,
int  max_pitch,
int best_pitch 
)
static

Definition at line 907 of file af_arnndn.c.

Referenced by pitch_search().

◆ pitch_search()

static void pitch_search ( const float x_lp,
float y,
int  len,
int  max_pitch,
int pitch 
)
static

Definition at line 954 of file af_arnndn.c.

Referenced by compute_frame_features().

◆ dct()

static void dct ( AudioRNNContext s,
float out,
const float in 
)
static

Definition at line 1011 of file af_arnndn.c.

Referenced by compute_frame_features(), and dct_error().

◆ compute_frame_features()

static int compute_frame_features ( AudioRNNContext s,
DenoiseState st,
AVComplexFloat X,
AVComplexFloat P,
float Ex,
float Ep,
float Exp,
float features,
const float in 
)
static

Definition at line 1021 of file af_arnndn.c.

Referenced by rnnoise_channel().

◆ interp_band_gain()

static void interp_band_gain ( float g,
const float bandE 
)
static

Definition at line 1129 of file af_arnndn.c.

Referenced by pitch_filter(), and rnnoise_channel().

◆ pitch_filter()

static void pitch_filter ( AVComplexFloat X,
const AVComplexFloat P,
const float Ex,
const float Ep,
const float Exp,
const float g 
)
static

Definition at line 1144 of file af_arnndn.c.

Referenced by rnnoise_channel().

◆ tansig_approx()

static float tansig_approx ( float  x)
inlinestatic

Definition at line 1219 of file af_arnndn.c.

Referenced by compute_dense(), compute_gru(), and sigmoid_approx().

◆ sigmoid_approx()

static float sigmoid_approx ( float  x)
inlinestatic

Definition at line 1247 of file af_arnndn.c.

Referenced by compute_dense(), and compute_gru().

◆ compute_dense()

static void compute_dense ( const DenseLayer layer,
float output,
const float input 
)
static

Definition at line 1252 of file af_arnndn.c.

Referenced by compute_rnn().

◆ compute_gru()

static void compute_gru ( AudioRNNContext s,
const GRULayer gru,
float state,
const float input 
)
static

Definition at line 1280 of file af_arnndn.c.

Referenced by compute_rnn().

◆ compute_rnn()

static void compute_rnn ( AudioRNNContext s,
RNNState rnn,
float gains,
float vad,
const float input 
)
static

Definition at line 1333 of file af_arnndn.c.

Referenced by rnnoise_channel().

◆ rnnoise_channel()

static float rnnoise_channel ( AudioRNNContext s,
DenoiseState st,
float out,
const float in,
int  disabled 
)
static

Definition at line 1361 of file af_arnndn.c.

Referenced by rnnoise_channels().

◆ rnnoise_channels()

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

Definition at line 1409 of file af_arnndn.c.

Referenced by filter_frame().

◆ filter_frame()

static int filter_frame ( AVFilterLink inlink,
AVFrame in 
)
static

Definition at line 1428 of file af_arnndn.c.

Referenced by activate().

◆ activate()

static int activate ( AVFilterContext ctx)
static

Definition at line 1450 of file af_arnndn.c.

◆ open_model()

static int open_model ( AVFilterContext ctx,
RNNModel **  model 
)
static

Definition at line 1472 of file af_arnndn.c.

Referenced by init(), and process_command().

◆ init()

static av_cold int init ( AVFilterContext ctx)
static

Definition at line 1494 of file af_arnndn.c.

◆ free_model()

static void free_model ( AVFilterContext ctx,
int  n 
)
static

Definition at line 1523 of file af_arnndn.c.

Referenced by process_command(), and uninit().

◆ 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 1537 of file af_arnndn.c.

◆ uninit()

static av_cold void uninit ( AVFilterContext ctx)
static

Definition at line 1567 of file af_arnndn.c.

◆ AVFILTER_DEFINE_CLASS()

AVFILTER_DEFINE_CLASS ( arnndn  )

Variable Documentation

◆ eband5ms

const uint8_t eband5ms[]
static
Initial value:
= {
0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 34, 40, 48, 60, 78, 100
}

Definition at line 443 of file af_arnndn.c.

Referenced by compute_band_corr(), compute_band_energy(), and interp_band_gain().

◆ second_check

const uint8_t second_check[16] = {0, 0, 3, 2, 3, 2, 5, 2, 3, 2, 3, 2, 5, 2, 3, 2}
static

Definition at line 803 of file af_arnndn.c.

Referenced by remove_doubling().

◆ tansig_table

const float tansig_table[201]
static

Definition at line 1175 of file af_arnndn.c.

Referenced by tansig_approx().

◆ inputs

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

Definition at line 1580 of file af_arnndn.c.

◆ arnndn_options

const AVOption arnndn_options[]
static
Initial value:
= {
{ "model", "set model name", OFFSET(model_name), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 0, AF },
{ "m", "set model name", OFFSET(model_name), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 0, AF },
{ "mix", "set output vs input mix", OFFSET(mix), AV_OPT_TYPE_FLOAT, {.dbl=1.0},-1, 1, AF },
{ NULL }
}

Definition at line 1591 of file af_arnndn.c.

◆ ff_af_arnndn

const AVFilter ff_af_arnndn
Initial value:
= {
.name = "arnndn",
.description = NULL_IF_CONFIG_SMALL("Reduce noise from speech using Recurrent Neural Networks."),
.priv_size = sizeof(AudioRNNContext),
.priv_class = &arnndn_class,
.init = init,
.process_command = process_command,
}

Definition at line 1600 of file af_arnndn.c.

name
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf default minimum maximum flags name is the option name
Definition: writing_filters.txt:88
mix
static int mix(int c0, int c1)
Definition: 4xm.c:717
AVERROR
Filter the word “frame” indicates either a video frame or a group of audio as stored in an AVFrame structure Format for each input and each output the list of supported formats For video that means pixel format For audio that means channel sample they are references to shared objects When the negotiation mechanism computes the intersection of the formats supported at each end of a all references to both lists are replaced with a reference to the intersection And when a single format is eventually chosen for a link amongst the remaining all references to the list are updated That means that if a filter requires that its input and output have the same format amongst a supported all it has to do is use a reference to the same list of formats query_formats can leave some formats unset and return AVERROR(EAGAIN) to cause the negotiation mechanism toagain later. That can be used by filters with complex requirements to use the format negotiated on one link to set the formats supported on another. Frame references ownership and permissions
activate
static int activate(AVFilterContext *ctx)
Definition: af_arnndn.c:1450
uninit
static av_cold void uninit(AVFilterContext *ctx)
Definition: af_arnndn.c:1567
OFFSET
#define OFFSET(x)
Definition: af_arnndn.c:1588
FILTER_QUERY_FUNC
#define FILTER_QUERY_FUNC(func)
Definition: internal.h:169
process_command
static int process_command(AVFilterContext *ctx, const char *cmd, const char *args, char *res, int res_len, int flags)
Definition: af_arnndn.c:1537
ACTIVATION_RELU
#define ACTIVATION_RELU
Definition: af_arnndn.c:70
type
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf type
Definition: writing_filters.txt:86
AF
#define AF
Definition: af_arnndn.c:1589
inputs
static const AVFilterPad inputs[]
Definition: af_arnndn.c:1580
AVMEDIA_TYPE_AUDIO
@ AVMEDIA_TYPE_AUDIO
Definition: avutil.h:202
config_input
static int config_input(AVFilterLink *inlink)
Definition: af_arnndn.c:348
ACTIVATION_TANH
#define ACTIVATION_TANH
Definition: af_arnndn.c:68
FILTER_INPUTS
#define FILTER_INPUTS(array)
Definition: internal.h:192
NULL
#define NULL
Definition: coverity.c:32
ff_audio_default_filterpad
const AVFilterPad ff_audio_default_filterpad[1]
An AVFilterPad array whose only entry has name "default" and is of type AVMEDIA_TYPE_AUDIO.
Definition: audio.c:32
c
Undefined Behavior In the C some operations are like signed integer dereferencing freed accessing outside allocated Undefined Behavior must not occur in a C it is not safe even if the output of undefined operations is unused The unsafety may seem nit picking but Optimizing compilers have in fact optimized code on the assumption that no undefined Behavior occurs Optimizing code based on wrong assumptions can and has in some cases lead to effects beyond the output of computations The signed integer overflow problem in speed critical code Code which is highly optimized and works with signed integers sometimes has the problem that often the output of the computation does not c
Definition: undefined.txt:32
f
f
Definition: af_crystalizer.c:121
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:106
ACTIVATION_SIGMOID
#define ACTIVATION_SIGMOID
Definition: af_arnndn.c:69
AV_OPT_TYPE_FLOAT
@ AV_OPT_TYPE_FLOAT
Definition: opt.h:228
i
#define i(width, name, range_min, range_max)
Definition: cbs_h2645.c:255
AudioRNNContext
Definition: af_arnndn.c:135
len
int len
Definition: vorbis_enc_data.h:426
av_calloc
void * av_calloc(size_t nmemb, size_t size)
Definition: mem.c:262
ret
ret
Definition: filter_design.txt:187
F_ACTIVATION_RELU
#define F_ACTIVATION_RELU
Definition: af_arnndn.c:154
values
these buffered frames must be flushed immediately if a new input produces new the filter must not call request_frame to get more It must just process the frame or queue it The task of requesting more frames is left to the filter s request_frame method or the application If a filter has several the filter must be ready for frames arriving randomly on any input any filter with several inputs will most likely require some kind of queuing mechanism It is perfectly acceptable to have a limited queue and to drop frames when the inputs are too unbalanced request_frame For filters that do not use the this method is called when a frame is wanted on an output For a it should directly call filter_frame on the corresponding output For a if there are queued frames already one of these frames should be pushed If the filter should request a frame on one of its repeatedly until at least one frame has been pushed Return values
Definition: filter_design.txt:263
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:117
query_formats
static int query_formats(AVFilterContext *ctx)
Definition: af_arnndn.c:329
FFALIGN
#define FFALIGN(x, a)
Definition: macros.h:78
F_ACTIVATION_SIGMOID
#define F_ACTIVATION_SIGMOID
Definition: af_arnndn.c:153
FILTER_OUTPUTS
#define FILTER_OUTPUTS(array)
Definition: internal.h:193
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:155
AV_OPT_TYPE_STRING
@ AV_OPT_TYPE_STRING
Definition: opt.h:229
init
static av_cold int init(AVFilterContext *ctx)
Definition: af_arnndn.c:1494