FFmpeg
Macros | Functions | Variables
af_afir.c File Reference
#include <float.h>
#include "libavutil/tx.h"
#include "libavutil/avstring.h"
#include "libavutil/channel_layout.h"
#include "libavutil/common.h"
#include "libavutil/float_dsp.h"
#include "libavutil/frame.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/log.h"
#include "libavutil/opt.h"
#include "libavutil/rational.h"
#include "libavutil/xga_font_data.h"
#include "audio.h"
#include "avfilter.h"
#include "filters.h"
#include "formats.h"
#include "internal.h"
#include "af_afir.h"
#include "af_afirdsp.h"
#include "afir_template.c"

Go to the source code of this file.

Macros

#define DEPTH   32
 
#define DEPTH   64
 
#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 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 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 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)
 
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

◆ DEPTH [1/2]

#define DEPTH   32

Definition at line 101 of file af_afir.c.

◆ DEPTH [2/2]

#define DEPTH   64

Definition at line 101 of file af_afir.c.

◆ AF

Definition at line 630 of file af_afir.c.

◆ AFR

Definition at line 631 of file af_afir.c.

◆ VF

Definition at line 632 of file af_afir.c.

◆ OFFSET

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

Definition at line 633 of file af_afir.c.

Function Documentation

◆ drawtext()

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

Definition at line 48 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 71 of file af_afir.c.

Referenced by draw_response().

◆ fir_channel()

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

Definition at line 104 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 122 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 135 of file af_afir.c.

Referenced by activate().

◆ init_segment()

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

Definition at line 157 of file af_afir.c.

Referenced by convert_coeffs().

◆ uninit_segment()

static void uninit_segment ( AVFilterContext ctx,
AudioFIRSegment seg 
)
static

Definition at line 213 of file af_afir.c.

Referenced by uninit().

◆ convert_coeffs()

static int convert_coeffs ( AVFilterContext ctx)
static

Definition at line 245 of file af_afir.c.

Referenced by activate().

◆ check_ir()

static int check_ir ( AVFilterLink link)
static

Definition at line 334 of file af_afir.c.

Referenced by activate().

◆ activate()

static int activate ( AVFilterContext ctx)
static

Definition at line 350 of file af_afir.c.

◆ query_formats()

static int query_formats ( AVFilterContext ctx)
static

Definition at line 437 of file af_afir.c.

◆ config_output()

static int config_output ( AVFilterLink outlink)
static

Definition at line 486 of file af_afir.c.

Referenced by init().

◆ uninit()

static av_cold void uninit ( AVFilterContext ctx)
static

Definition at line 511 of file af_afir.c.

◆ config_video()

static int config_video ( AVFilterLink outlink)
static

Definition at line 528 of file af_afir.c.

Referenced by init().

◆ init()

static av_cold int init ( AVFilterContext ctx)
static

Definition at line 547 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 607 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 },
{ "precision", "set processing precision", OFFSET(precision), AV_OPT_TYPE_INT, {.i64=0}, 0, 2, AF, "precision" },
{ "auto", "set auto processing precision", 0, AV_OPT_TYPE_CONST, {.i64=0}, 0, 0, AF, "precision" },
{ "float", "set single-floating point processing precision", 0, AV_OPT_TYPE_CONST, {.i64=1}, 0, 0, AF, "precision" },
{ "double","set double-floating point processing precision", 0, AV_OPT_TYPE_CONST, {.i64=2}, 0, 0, AF, "precision" },
{ NULL }
}

Definition at line 635 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 666 of file af_afir.c.

activate
static int activate(AVFilterContext *ctx)
Definition: af_afir.c:350
AV_OPT_TYPE_VIDEO_RATE
@ AV_OPT_TYPE_VIDEO_RATE
offset must point to AVRational
Definition: opt.h:238
VF
#define VF
Definition: af_afir.c:632
w
uint8_t w
Definition: llviddspenc.c:38
FILTER_QUERY_FUNC
#define FILTER_QUERY_FUNC(func)
Definition: internal.h:167
uninit
static av_cold void uninit(AVFilterContext *ctx)
Definition: af_afir.c:511
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:116
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:235
AFR
#define AFR
Definition: af_afir.c:631
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:122
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:630
AV_OPT_TYPE_FLOAT
@ AV_OPT_TYPE_FLOAT
Definition: opt.h:228
query_formats
static int query_formats(AVFilterContext *ctx)
Definition: af_afir.c:437
OFFSET
#define OFFSET(x)
Definition: af_afir.c:633
AudioFIRContext
Definition: af_afir.h:56
AV_OPT_TYPE_INT
@ AV_OPT_TYPE_INT
Definition: opt.h:225
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
init
static av_cold int init(AVFilterContext *ctx)
Definition: af_afir.c:547
AV_OPT_TYPE_BOOL
@ AV_OPT_TYPE_BOOL
Definition: opt.h:244
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:607
AV_OPT_TYPE_CONST
@ AV_OPT_TYPE_CONST
Definition: opt.h:234