FFmpeg
Data Structures | Macros | Enumerations | Functions | Variables
af_afade.c File Reference
#include "config_components.h"
#include "libavutil/opt.h"
#include "audio.h"
#include "avfilter.h"
#include "filters.h"

Go to the source code of this file.

Data Structures

struct  AudioFadeContext
 

Macros

#define OFFSET(x)   offsetof(AudioFadeContext, x)
 
#define FLAGS   AV_OPT_FLAG_AUDIO_PARAM|AV_OPT_FLAG_FILTERING_PARAM
 
#define TFLAGS   AV_OPT_FLAG_AUDIO_PARAM|AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_RUNTIME_PARAM
 
#define CUBE(a)   ((a)*(a)*(a))
 
#define FADE_PLANAR(name, type)
 
#define FADE(name, type)
 
#define SCALE_PLANAR(name, type)
 
#define SCALE(name, type)
 

Enumerations

enum  CurveType {
  NONE = -1, TRI, QSIN, ESIN,
  HSIN, LOG, IPAR, QUA,
  CUB, SQU, CBR, PAR,
  EXP, IQSIN, IHSIN, DESE,
  DESI, LOSI, SINC, ISINC,
  QUAT, QUATR, QSIN2, HSIN2,
  NB_CURVES
}
 

Functions

static double fade_gain (int curve, int64_t index, int64_t range, double silence, double unity)
 
static int config_output (AVFilterLink *outlink)
 

Variables

static enum AVSampleFormat sample_fmts []
 

Detailed Description

fade audio filter

Definition in file af_afade.c.

Macro Definition Documentation

◆ OFFSET

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

Definition at line 62 of file af_afade.c.

◆ FLAGS

Definition at line 63 of file af_afade.c.

◆ TFLAGS

Definition at line 64 of file af_afade.c.

◆ CUBE

#define CUBE (   a)    ((a)*(a)*(a))

◆ FADE_PLANAR

#define FADE_PLANAR (   name,
  type 
)
Value:
static void fade_samples_## name ##p(uint8_t **dst, uint8_t * const *src, \
int nb_samples, int channels, int dir, \
int64_t start, int64_t range,int curve,\
double silence, double unity) \
{ \
int i, c; \
for (i = 0; i < nb_samples; i++) { \
double gain = fade_gain(curve, start + i * dir,range,silence,unity);\
for (c = 0; c < channels; c++) { \
type *d = (type *)dst[c]; \
const type *s = (type *)src[c]; \
\
d[i] = s[i] * gain; \
} \
} \
}

Definition at line 164 of file af_afade.c.

◆ FADE

#define FADE (   name,
  type 
)
Value:
static void fade_samples_## name (uint8_t **dst, uint8_t * const *src, \
int nb_samples, int channels, int dir, \
int64_t start, int64_t range, int curve, \
double silence, double unity) \
{ \
type *d = (type *)dst[0]; \
const type *s = (type *)src[0]; \
int i, c, k = 0; \
for (i = 0; i < nb_samples; i++) { \
double gain = fade_gain(curve, start + i * dir,range,silence,unity);\
for (c = 0; c < channels; c++, k++) \
d[k] = s[k] * gain; \
} \
}

Definition at line 183 of file af_afade.c.

◆ SCALE_PLANAR

#define SCALE_PLANAR (   name,
  type 
)
Value:
static void scale_samples_## name ##p(uint8_t **dst, uint8_t * const *src, \
int nb_samples, int channels, \
double gain) \
{ \
int i, c; \
for (i = 0; i < nb_samples; i++) { \
for (c = 0; c < channels; c++) { \
type *d = (type *)dst[c]; \
const type *s = (type *)src[c]; \
\
d[i] = s[i] * gain; \
} \
} \
}

Definition at line 210 of file af_afade.c.

◆ SCALE

#define SCALE (   name,
  type 
)
Value:
static void scale_samples_## name (uint8_t **dst, uint8_t * const *src, \
int nb_samples, int channels, double gain)\
{ \
type *d = (type *)dst[0]; \
const type *s = (type *)src[0]; \
int i, c, k = 0; \
for (i = 0; i < nb_samples; i++) { \
for (c = 0; c < channels; c++, k++) \
d[k] = s[k] * gain; \
} \
}

Definition at line 227 of file af_afade.c.

Enumeration Type Documentation

◆ CurveType

enum CurveType
Enumerator
NONE 
TRI 
QSIN 
ESIN 
HSIN 
LOG 
IPAR 
QUA 
CUB 
SQU 
CBR 
PAR 
EXP 
IQSIN 
IHSIN 
DESE 
DESI 
LOSI 
SINC 
ISINC 
QUAT 
QUATR 
QSIN2 
HSIN2 
NB_CURVES 

Definition at line 60 of file af_afade.c.

Function Documentation

◆ fade_gain()

static double fade_gain ( int  curve,
int64_t  index,
int64_t  range,
double  silence,
double  unity 
)
static

Definition at line 74 of file af_afade.c.

◆ config_output()

static int config_output ( AVFilterLink outlink)
static

Definition at line 251 of file af_afade.c.

Variable Documentation

◆ sample_fmts

enum AVSampleFormat sample_fmts[]
static
AV_SAMPLE_FMT_FLTP
@ AV_SAMPLE_FMT_FLTP
float, planar
Definition: samplefmt.h:66
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
int64_t
long long int64_t
Definition: coverity.c:34
AV_SAMPLE_FMT_S32P
@ AV_SAMPLE_FMT_S32P
signed 32 bits, planar
Definition: samplefmt.h:65
fade_gain
static double fade_gain(int curve, int64_t index, int64_t range, double silence, double unity)
Definition: af_afade.c:74
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
s
#define s(width, name)
Definition: cbs_vp9.c:198
channels
channels
Definition: aptx.h:31
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
dst
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t int int16_t * dst
Definition: dsp.h:83
for
for(k=2;k<=8;++k)
Definition: h264pred_template.c:425
AV_SAMPLE_FMT_NONE
@ AV_SAMPLE_FMT_NONE
Definition: samplefmt.h:56
range
enum AVColorRange range
Definition: mediacodec_wrapper.c:2594
AV_SAMPLE_FMT_S16P
@ AV_SAMPLE_FMT_S16P
signed 16 bits, planar
Definition: samplefmt.h:64
i
#define i(width, name, range_min, range_max)
Definition: cbs_h2645.c:256
AV_SAMPLE_FMT_S16
@ AV_SAMPLE_FMT_S16
signed 16 bits
Definition: samplefmt.h:58
AV_SAMPLE_FMT_DBLP
@ AV_SAMPLE_FMT_DBLP
double, planar
Definition: samplefmt.h:67
AV_SAMPLE_FMT_DBL
@ AV_SAMPLE_FMT_DBL
double
Definition: samplefmt.h:61
AV_SAMPLE_FMT_S32
@ AV_SAMPLE_FMT_S32
signed 32 bits
Definition: samplefmt.h:59
AV_SAMPLE_FMT_FLT
@ AV_SAMPLE_FMT_FLT
float
Definition: samplefmt.h:60
src
#define src
Definition: vp8dsp.c:248