FFmpeg
Macros | Functions | Variables
af_afir.c File Reference
#include <float.h>
#include "libavutil/avstring.h"
#include "libavutil/channel_layout.h"
#include "libavutil/common.h"
#include "libavutil/float_dsp.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/opt.h"
#include "libavutil/xga_font_data.h"
#include "libavcodec/avfft.h"
#include "audio.h"
#include "avfilter.h"
#include "filters.h"
#include "formats.h"
#include "internal.h"
#include "af_afir.h"

Go to the source code of this file.

Macros

#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
 
#define VF   AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_FILTERING_PARAM
 
#define OFFSET(x)   offsetof(AudioFIRContext, x)
 

Functions

static void fcmul_add_c (float *sum, const float *t, const float *c, ptrdiff_t len)
 
static void direct (const float *in, const FFTComplex *ir, int len, float *out)
 
static void fir_fadd (AudioFIRContext *s, float *dst, const float *src, int nb_samples)
 
static int fir_quantum (AVFilterContext *ctx, AVFrame *out, int ch, int offset)
 
static int fir_channel (AVFilterContext *ctx, AVFrame *out, int ch)
 
static int fir_channels (AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs)
 
static int fir_frame (AudioFIRContext *s, AVFrame *in, AVFilterLink *outlink)
 
static void drawtext (AVFrame *pic, int x, int y, const char *txt, uint32_t color)
 
static void draw_line (AVFrame *out, int x0, int y0, int x1, int y1, uint32_t color)
 
static void draw_response (AVFilterContext *ctx, AVFrame *out)
 
static int init_segment (AVFilterContext *ctx, AudioFIRSegment *seg, int offset, int nb_partitions, int part_size)
 
static void uninit_segment (AVFilterContext *ctx, AudioFIRSegment *seg)
 
static int convert_coeffs (AVFilterContext *ctx)
 
static int check_ir (AVFilterLink *link)
 
static int activate (AVFilterContext *ctx)
 
static int query_formats (AVFilterContext *ctx)
 
static int config_output (AVFilterLink *outlink)
 
static av_cold void uninit (AVFilterContext *ctx)
 
static int config_video (AVFilterLink *outlink)
 
void ff_afir_init (AudioFIRDSPContext *dsp)
 
static av_cold int init (AVFilterContext *ctx)
 
static int process_command (AVFilterContext *ctx, const char *cmd, const char *arg, char *res, int res_len, int flags)
 
 AVFILTER_DEFINE_CLASS (afir)
 

Variables

static const AVOption afir_options []
 
const AVFilter ff_af_afir
 

Detailed Description

An arbitrary audio FIR filter

Definition in file af_afir.c.

Macro Definition Documentation

◆ AF

Definition at line 908 of file af_afir.c.

◆ AFR

Definition at line 909 of file af_afir.c.

◆ VF

Definition at line 910 of file af_afir.c.

◆ OFFSET

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

Definition at line 911 of file af_afir.c.

Function Documentation

◆ fcmul_add_c()

static void fcmul_add_c ( float *  sum,
const float *  t,
const float *  c,
ptrdiff_t  len 
)
static

Definition at line 44 of file af_afir.c.

Referenced by ff_afir_init().

◆ direct()

static void direct ( const float *  in,
const FFTComplex ir,
int  len,
float *  out 
)
static

◆ fir_fadd()

static void fir_fadd ( AudioFIRContext s,
float *  dst,
const float *  src,
int  nb_samples 
)
static

Definition at line 68 of file af_afir.c.

Referenced by fir_quantum().

◆ fir_quantum()

static int fir_quantum ( AVFilterContext ctx,
AVFrame out,
int  ch,
int  offset 
)
static

Definition at line 78 of file af_afir.c.

Referenced by fir_channel().

◆ fir_channel()

static int fir_channel ( AVFilterContext ctx,
AVFrame out,
int  ch 
)
static

Definition at line 190 of file af_afir.c.

Referenced by fir_channels().

◆ fir_channels()

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

Definition at line 201 of file af_afir.c.

Referenced by fir_frame().

◆ fir_frame()

static int fir_frame ( AudioFIRContext s,
AVFrame in,
AVFilterLink outlink 
)
static

Definition at line 214 of file af_afir.c.

Referenced by activate().

◆ drawtext()

static void drawtext ( AVFrame pic,
int  x,
int  y,
const char *  txt,
uint32_t  color 
)
static

Definition at line 241 of file af_afir.c.

Referenced by draw_response().

◆ draw_line()

static void draw_line ( AVFrame out,
int  x0,
int  y0,
int  x1,
int  y1,
uint32_t  color 
)
static

Definition at line 264 of file af_afir.c.

Referenced by draw_response().

◆ draw_response()

static void draw_response ( AVFilterContext ctx,
AVFrame out 
)
static

Definition at line 290 of file af_afir.c.

Referenced by convert_coeffs().

◆ init_segment()

static int init_segment ( AVFilterContext ctx,
AudioFIRSegment seg,
int  offset,
int  nb_partitions,
int  part_size 
)
static

Definition at line 379 of file af_afir.c.

Referenced by convert_coeffs().

◆ uninit_segment()

static void uninit_segment ( AVFilterContext ctx,
AudioFIRSegment seg 
)
static

Definition at line 421 of file af_afir.c.

Referenced by uninit().

◆ convert_coeffs()

static int convert_coeffs ( AVFilterContext ctx)
static

Definition at line 451 of file af_afir.c.

Referenced by activate().

◆ check_ir()

static int check_ir ( AVFilterLink link)
static

Definition at line 612 of file af_afir.c.

Referenced by activate().

◆ activate()

static int activate ( AVFilterContext ctx)
static

Definition at line 628 of file af_afir.c.

◆ query_formats()

static int query_formats ( AVFilterContext ctx)
static

Definition at line 715 of file af_afir.c.

◆ config_output()

static int config_output ( AVFilterLink outlink)
static

Definition at line 763 of file af_afir.c.

Referenced by init().

◆ uninit()

static av_cold void uninit ( AVFilterContext ctx)
static

Definition at line 781 of file af_afir.c.

◆ config_video()

static int config_video ( AVFilterLink outlink)
static

Definition at line 798 of file af_afir.c.

Referenced by init().

◆ ff_afir_init()

void ff_afir_init ( AudioFIRDSPContext dsp)

Definition at line 817 of file af_afir.c.

Referenced by checkasm_check_afir(), and init().

◆ init()

static av_cold int init ( AVFilterContext ctx)
static

Definition at line 825 of file af_afir.c.

◆ process_command()

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

Definition at line 885 of file af_afir.c.

◆ AVFILTER_DEFINE_CLASS()

AVFILTER_DEFINE_CLASS ( afir  )

Variable Documentation

◆ afir_options

const AVOption afir_options[]
static
Initial value:
= {
{ "dry", "set dry gain", OFFSET(dry_gain), AV_OPT_TYPE_FLOAT, {.dbl=1}, 0, 10, AF },
{ "wet", "set wet gain", OFFSET(wet_gain), AV_OPT_TYPE_FLOAT, {.dbl=1}, 0, 10, AF },
{ "length", "set IR length", OFFSET(length), AV_OPT_TYPE_FLOAT, {.dbl=1}, 0, 1, AF },
{ "gtype", "set IR auto gain type",OFFSET(gtype), AV_OPT_TYPE_INT, {.i64=0}, -1, 2, AF, "gtype" },
{ "none", "without auto gain", 0, AV_OPT_TYPE_CONST, {.i64=-1}, 0, 0, AF, "gtype" },
{ "peak", "peak gain", 0, AV_OPT_TYPE_CONST, {.i64=0}, 0, 0, AF, "gtype" },
{ "dc", "DC gain", 0, AV_OPT_TYPE_CONST, {.i64=1}, 0, 0, AF, "gtype" },
{ "gn", "gain to noise", 0, AV_OPT_TYPE_CONST, {.i64=2}, 0, 0, AF, "gtype" },
{ "irgain", "set IR gain", OFFSET(ir_gain), AV_OPT_TYPE_FLOAT, {.dbl=1}, 0, 1, AF },
{ "irfmt", "set IR format", OFFSET(ir_format), AV_OPT_TYPE_INT, {.i64=1}, 0, 1, AF, "irfmt" },
{ "mono", "single channel", 0, AV_OPT_TYPE_CONST, {.i64=0}, 0, 0, AF, "irfmt" },
{ "input", "same as input", 0, AV_OPT_TYPE_CONST, {.i64=1}, 0, 0, AF, "irfmt" },
{ "maxir", "set max IR length", OFFSET(max_ir_len), AV_OPT_TYPE_FLOAT, {.dbl=30}, 0.1, 60, AF },
{ "response", "show IR frequency response", OFFSET(response), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, VF },
{ "channel", "set IR channel to display frequency response", OFFSET(ir_channel), AV_OPT_TYPE_INT, {.i64=0}, 0, 1024, VF },
{ "size", "set video size", OFFSET(w), AV_OPT_TYPE_IMAGE_SIZE, {.str = "hd720"}, 0, 0, VF },
{ "rate", "set video rate", OFFSET(frame_rate), AV_OPT_TYPE_VIDEO_RATE, {.str = "25"}, 0, INT32_MAX, VF },
{ "minp", "set min partition size", OFFSET(minp), AV_OPT_TYPE_INT, {.i64=8192}, 1, 32768, AF },
{ "maxp", "set max partition size", OFFSET(maxp), AV_OPT_TYPE_INT, {.i64=8192}, 8, 32768, AF },
{ "nbirs", "set number of input IRs",OFFSET(nb_irs),AV_OPT_TYPE_INT, {.i64=1}, 1, 32, AF },
{ "ir", "select IR", OFFSET(selir), AV_OPT_TYPE_INT, {.i64=0}, 0, 31, AFR },
{ NULL }
}

Definition at line 913 of file af_afir.c.

◆ ff_af_afir

const AVFilter ff_af_afir
Initial value:
= {
.name = "afir",
.description = NULL_IF_CONFIG_SMALL("Apply Finite Impulse Response filter with supplied coefficients in additional stream(s)."),
.priv_size = sizeof(AudioFIRContext),
.priv_class = &afir_class,
.init = init,
.activate = activate,
.uninit = uninit,
.process_command = process_command,
}

Definition at line 940 of file af_afir.c.

activate
static int activate(AVFilterContext *ctx)
Definition: af_afir.c:628
AV_OPT_TYPE_VIDEO_RATE
@ AV_OPT_TYPE_VIDEO_RATE
offset must point to AVRational
Definition: opt.h:237
VF
#define VF
Definition: af_afir.c:910
w
uint8_t w
Definition: llviddspenc.c:38
FILTER_QUERY_FUNC
#define FILTER_QUERY_FUNC(func)
Definition: internal.h:168
uninit
static av_cold void uninit(AVFilterContext *ctx)
Definition: af_afir.c:781
AVFILTER_FLAG_DYNAMIC_INPUTS
#define AVFILTER_FLAG_DYNAMIC_INPUTS
The number of the filter inputs is not determined just by AVFilter.inputs.
Definition: avfilter.h:110
NULL
#define NULL
Definition: coverity.c:32
AV_OPT_TYPE_IMAGE_SIZE
@ AV_OPT_TYPE_IMAGE_SIZE
offset must point to two consecutive integers
Definition: opt.h:234
AFR
#define AFR
Definition: af_afir.c:909
AVFILTER_FLAG_DYNAMIC_OUTPUTS
#define AVFILTER_FLAG_DYNAMIC_OUTPUTS
The number of the filter outputs is not determined just by AVFilter.outputs.
Definition: avfilter.h:116
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
AF
#define AF
Definition: af_afir.c:908
AV_OPT_TYPE_FLOAT
@ AV_OPT_TYPE_FLOAT
Definition: opt.h:227
query_formats
static int query_formats(AVFilterContext *ctx)
Definition: af_afir.c:715
OFFSET
#define OFFSET(x)
Definition: af_afir.c:911
AudioFIRContext
Definition: af_afir.h:61
AV_OPT_TYPE_INT
@ AV_OPT_TYPE_INT
Definition: opt.h:224
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:121
init
static av_cold int init(AVFilterContext *ctx)
Definition: af_afir.c:825
AV_OPT_TYPE_BOOL
@ AV_OPT_TYPE_BOOL
Definition: opt.h:241
process_command
static int process_command(AVFilterContext *ctx, const char *cmd, const char *arg, char *res, int res_len, int flags)
Definition: af_afir.c:885
AV_OPT_TYPE_CONST
@ AV_OPT_TYPE_CONST
Definition: opt.h:233