FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Functions | Variables
af_sidechaincompress.c File Reference

Sidechain compressor filter. More...

#include "libavutil/avassert.h"
#include "libavutil/channel_layout.h"
#include "libavutil/common.h"
#include "libavutil/opt.h"
#include "audio.h"
#include "avfilter.h"
#include "formats.h"
#include "internal.h"

Go to the source code of this file.

Data Structures

struct  SidechainCompressContext
 

Macros

#define OFFSET(x)   offsetof(SidechainCompressContext, x)
 
#define A   AV_OPT_FLAG_AUDIO_PARAM
 
#define F   AV_OPT_FLAG_FILTERING_PARAM
 
#define FAKE_INFINITY   (65536.0 * 65536.0)
 
#define IS_FAKE_INFINITY(value)   (fabs(value-FAKE_INFINITY) < 1.0)
 

Functions

 AVFILTER_DEFINE_CLASS (sidechaincompress)
 
static av_cold int init (AVFilterContext *ctx)
 
static float hermite_interpolation (float x, float x0, float x1, float p0, float p1, float m0, float m1)
 
static double output_gain (double lin_slope, double ratio, double thres, double knee, double knee_start, double knee_stop, double compressed_knee_stop, int detection)
 
static int filter_frame (AVFilterLink *link, AVFrame *frame)
 
static int request_frame (AVFilterLink *outlink)
 
static int query_formats (AVFilterContext *ctx)
 
static int config_output (AVFilterLink *outlink)
 

Variables

static const AVOption sidechaincompress_options []
 
static const AVFilterPad sidechaincompress_inputs []
 
static const AVFilterPad sidechaincompress_outputs []
 
AVFilter ff_af_sidechaincompress
 

Detailed Description

Sidechain compressor filter.

Definition in file af_sidechaincompress.c.

Macro Definition Documentation

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

Definition at line 58 of file af_sidechaincompress.c.

#define A   AV_OPT_FLAG_AUDIO_PARAM

Definition at line 59 of file af_sidechaincompress.c.

Definition at line 60 of file af_sidechaincompress.c.

#define FAKE_INFINITY   (65536.0 * 65536.0)

Definition at line 117 of file af_sidechaincompress.c.

#define IS_FAKE_INFINITY (   value)    (fabs(value-FAKE_INFINITY) < 1.0)

Definition at line 120 of file af_sidechaincompress.c.

Referenced by output_gain().

Function Documentation

AVFILTER_DEFINE_CLASS ( sidechaincompress  )
static av_cold int init ( AVFilterContext ctx)
static

Definition at line 80 of file af_sidechaincompress.c.

static float hermite_interpolation ( float  x,
float  x0,
float  x1,
float  p0,
float  p1,
float  m0,
float  m1 
)
inlinestatic

Definition at line 93 of file af_sidechaincompress.c.

Referenced by output_gain().

static double output_gain ( double  lin_slope,
double  ratio,
double  thres,
double  knee,
double  knee_start,
double  knee_stop,
double  compressed_knee_stop,
int  detection 
)
static

Definition at line 122 of file af_sidechaincompress.c.

Referenced by filter_frame().

static int filter_frame ( AVFilterLink link,
AVFrame frame 
)
static

Definition at line 149 of file af_sidechaincompress.c.

static int request_frame ( AVFilterLink outlink)
static

Definition at line 216 of file af_sidechaincompress.c.

static int query_formats ( AVFilterContext ctx)
static

Definition at line 237 of file af_sidechaincompress.c.

static int config_output ( AVFilterLink outlink)
static

Definition at line 279 of file af_sidechaincompress.c.

Variable Documentation

const AVOption sidechaincompress_options[]
static
Initial value:
= {
{ "threshold", "set threshold", OFFSET(threshold), AV_OPT_TYPE_DOUBLE, {.dbl=0.125}, 0.000976563, 1, A|F },
{ "ratio", "set ratio", OFFSET(ratio), AV_OPT_TYPE_DOUBLE, {.dbl=2}, 1, 20, A|F },
{ "attack", "set attack", OFFSET(attack), AV_OPT_TYPE_DOUBLE, {.dbl=20}, 0.01, 2000, A|F },
{ "release", "set release", OFFSET(release), AV_OPT_TYPE_DOUBLE, {.dbl=250}, 0.01, 9000, A|F },
{ "makeup", "set make up gain", OFFSET(makeup), AV_OPT_TYPE_DOUBLE, {.dbl=2}, 1, 64, A|F },
{ "knee", "set knee", OFFSET(knee), AV_OPT_TYPE_DOUBLE, {.dbl=2.82843}, 1, 8, A|F },
{ "link", "set link type", OFFSET(link), AV_OPT_TYPE_INT, {.i64=0}, 0, 1, A|F, "link" },
{ "average", 0, 0, AV_OPT_TYPE_CONST, {.i64=0}, 0, 0, A|F, "link" },
{ "maximum", 0, 0, AV_OPT_TYPE_CONST, {.i64=1}, 0, 0, A|F, "link" },
{ "detection", "set detection", OFFSET(detection), AV_OPT_TYPE_INT, {.i64=1}, 0, 1, A|F, "detection" },
{ "peak", 0, 0, AV_OPT_TYPE_CONST, {.i64=0}, 0, 0, A|F, "detection" },
{ "rms", 0, 0, AV_OPT_TYPE_CONST, {.i64=1}, 0, 0, A|F, "detection" },
{ NULL }
}
#define NULL
Definition: coverity.c:32
#define F
#define A
#define OFFSET(x)

Definition at line 62 of file af_sidechaincompress.c.

const AVFilterPad sidechaincompress_inputs[]
static
Initial value:
= {
{
.name = "main",
.filter_frame = filter_frame,
.needs_writable = 1,
.needs_fifo = 1,
},{
.name = "sidechain",
.filter_frame = filter_frame,
.needs_fifo = 1,
},
{ NULL }
}
#define NULL
Definition: coverity.c:32
static int filter_frame(AVFilterLink *link, AVFrame *frame)

Definition at line 303 of file af_sidechaincompress.c.

const AVFilterPad sidechaincompress_outputs[]
static
Initial value:
= {
{
.name = "default",
.config_props = config_output,
.request_frame = request_frame,
},
{ NULL }
}
#define NULL
Definition: coverity.c:32
static int request_frame(AVFilterLink *outlink)
static int config_output(AVFilterLink *outlink)

Definition at line 319 of file af_sidechaincompress.c.

AVFilter ff_af_sidechaincompress
Initial value:
= {
.name = "sidechaincompress",
.description = NULL_IF_CONFIG_SMALL("Sidechain compressor."),
.priv_size = sizeof(SidechainCompressContext),
.priv_class = &sidechaincompress_class,
.init = init,
}
static const AVFilterPad sidechaincompress_outputs[]
static const AVFilterPad outputs[]
Definition: af_ashowinfo.c:248
static int query_formats(AVFilterContext *ctx)
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
Definition: internal.h:175
static const AVFilterPad sidechaincompress_inputs[]
static const AVFilterPad inputs[]
Definition: af_ashowinfo.c:239
static av_cold int init(AVFilterContext *ctx)

Definition at line 329 of file af_sidechaincompress.c.