FFmpeg
Data Structures | Macros | Enumerations | Functions | Variables
avf_showvolume.c File Reference
#include "libavutil/channel_layout.h"
#include "libavutil/eval.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/mem.h"
#include "libavutil/opt.h"
#include "libavutil/xga_font_data.h"
#include "avfilter.h"
#include "filters.h"
#include "formats.h"
#include "video.h"

Go to the source code of this file.

Data Structures

struct  ShowVolumeContext
 

Macros

#define OFFSET(x)   offsetof(ShowVolumeContext, x)
 
#define FLAGS   AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM
 

Enumerations

enum  { VAR_VOLUME, VAR_CHANNEL, VAR_PEAK, VAR_VARS_NB }
 
enum  DisplayScale {
  LINEAR, SQRT, CBRT, LOG,
  RLOG, NB_SCALES, LINEAR, SQRT,
  CBRT, LOG, FOURTHRT, FIFTHRT,
  NB_SCALES, LINEAR, LOG, NB_DISPLAY_SCALE
}
 

Functions

 AVFILTER_DEFINE_CLASS (showvolume)
 
static av_cold int init (AVFilterContext *ctx)
 
static int query_formats (const AVFilterContext *ctx, AVFilterFormatsConfig **cfg_in, AVFilterFormatsConfig **cfg_out)
 
static void find_peak (float *src, int nb_samples, float *peak)
 
static void find_rms (float *src, int nb_samples, float *rms)
 
static int config_input (AVFilterLink *inlink)
 
static int config_output (AVFilterLink *outlink)
 
static void drawtext (AVFrame *pic, int x, int y, const char *txt, int o)
 
static void clear_picture (ShowVolumeContext *s, AVFilterLink *outlink)
 
static int calc_max_draw (ShowVolumeContext *s, AVFilterLink *outlink, float max)
 
static void calc_persistent_max (ShowVolumeContext *s, float max, int channel)
 
static void draw_max_line (ShowVolumeContext *s, int max_draw, int channel)
 
static int filter_frame (AVFilterLink *inlink, AVFrame *insamples)
 
static int activate (AVFilterContext *ctx)
 
static av_cold void uninit (AVFilterContext *ctx)
 

Variables

static const char *const var_names [] = { "VOLUME", "CHANNEL", "PEAK", NULL }
 
static const AVOption showvolume_options []
 
static const AVFilterPad showvolume_inputs []
 
static const AVFilterPad showvolume_outputs []
 
const AVFilter ff_avf_showvolume
 

Macro Definition Documentation

◆ OFFSET

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

Definition at line 67 of file avf_showvolume.c.

◆ FLAGS

Definition at line 68 of file avf_showvolume.c.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
VAR_VOLUME 
VAR_CHANNEL 
VAR_PEAK 
VAR_VARS_NB 

Definition at line 33 of file avf_showvolume.c.

◆ DisplayScale

Enumerator
LINEAR 
SQRT 
CBRT 
LOG 
RLOG 
NB_SCALES 
LINEAR 
SQRT 
CBRT 
LOG 
FOURTHRT 
FIFTHRT 
NB_SCALES 
LINEAR 
LOG 
NB_DISPLAY_SCALE 

Definition at line 34 of file avf_showvolume.c.

Function Documentation

◆ AVFILTER_DEFINE_CLASS()

AVFILTER_DEFINE_CLASS ( showvolume  )

◆ init()

static av_cold int init ( AVFilterContext ctx)
static

Definition at line 98 of file avf_showvolume.c.

◆ query_formats()

static int query_formats ( const AVFilterContext ctx,
AVFilterFormatsConfig **  cfg_in,
AVFilterFormatsConfig **  cfg_out 
)
static

Definition at line 113 of file avf_showvolume.c.

◆ find_peak()

static void find_peak ( float src,
int  nb_samples,
float peak 
)
static

Definition at line 133 of file avf_showvolume.c.

Referenced by config_input().

◆ find_rms()

static void find_rms ( float src,
int  nb_samples,
float rms 
)
static

Definition at line 143 of file avf_showvolume.c.

Referenced by config_input().

◆ config_input()

static int config_input ( AVFilterLink inlink)
static

Definition at line 152 of file avf_showvolume.c.

◆ config_output()

static int config_output ( AVFilterLink outlink)
static

Definition at line 187 of file avf_showvolume.c.

◆ drawtext()

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

Definition at line 222 of file avf_showvolume.c.

Referenced by filter_frame().

◆ clear_picture()

static void clear_picture ( ShowVolumeContext s,
AVFilterLink outlink 
)
static

Definition at line 256 of file avf_showvolume.c.

Referenced by filter_frame().

◆ calc_max_draw()

static int calc_max_draw ( ShowVolumeContext s,
AVFilterLink outlink,
float  max 
)
inlinestatic

Definition at line 268 of file avf_showvolume.c.

Referenced by filter_frame().

◆ calc_persistent_max()

static void calc_persistent_max ( ShowVolumeContext s,
float  max,
int  channel 
)
inlinestatic

Definition at line 283 of file avf_showvolume.c.

Referenced by filter_frame().

◆ draw_max_line()

static void draw_max_line ( ShowVolumeContext s,
int  max_draw,
int  channel 
)
inlinestatic

Definition at line 294 of file avf_showvolume.c.

Referenced by filter_frame().

◆ filter_frame()

static int filter_frame ( AVFilterLink inlink,
AVFrame insamples 
)
static

Definition at line 310 of file avf_showvolume.c.

Referenced by activate().

◆ activate()

static int activate ( AVFilterContext ctx)
static

Definition at line 449 of file avf_showvolume.c.

◆ uninit()

static av_cold void uninit ( AVFilterContext ctx)
static

Definition at line 476 of file avf_showvolume.c.

Variable Documentation

◆ var_names

const char* const var_names[] = { "VOLUME", "CHANNEL", "PEAK", NULL }
static

Definition at line 32 of file avf_showvolume.c.

Referenced by init().

◆ showvolume_options

const AVOption showvolume_options[]
static
Initial value:
= {
{ "rate", "set video rate", OFFSET(frame_rate), AV_OPT_TYPE_VIDEO_RATE, {.str="25"}, 0, INT_MAX, FLAGS },
{ "r", "set video rate", OFFSET(frame_rate), AV_OPT_TYPE_VIDEO_RATE, {.str="25"}, 0, INT_MAX, FLAGS },
{ "b", "set border width", OFFSET(b), AV_OPT_TYPE_INT, {.i64=1}, 0, 5, FLAGS },
{ "w", "set channel width", OFFSET(w), AV_OPT_TYPE_INT, {.i64=400}, 80, 8192, FLAGS },
{ "h", "set channel height", OFFSET(h), AV_OPT_TYPE_INT, {.i64=20}, 1, 900, FLAGS },
{ "f", "set fade", OFFSET(f), AV_OPT_TYPE_DOUBLE, {.dbl=0.95}, 0, 1, FLAGS },
{ "c", "set volume color expression", OFFSET(color), AV_OPT_TYPE_STRING, {.str="PEAK*255+floor((1-PEAK)*255)*256+0xff000000"}, 0, 0, FLAGS },
{ "t", "display channel names", OFFSET(draw_text), AV_OPT_TYPE_BOOL, {.i64=1}, 0, 1, FLAGS },
{ "v", "display volume value", OFFSET(draw_volume), AV_OPT_TYPE_BOOL, {.i64=1}, 0, 1, FLAGS },
{ "dm", "duration for max value display", OFFSET(draw_persistent_duration), AV_OPT_TYPE_DOUBLE, {.dbl=0.}, 0, 9000, FLAGS},
{ "dmc","set color of the max value line", OFFSET(persistant_max_rgba), AV_OPT_TYPE_COLOR, {.str = "orange"}, 0, 0, FLAGS },
{ "o", "set orientation", OFFSET(orientation), AV_OPT_TYPE_INT, {.i64=0}, 0, 1, FLAGS, .unit = "orientation" },
{ "h", "horizontal", 0, AV_OPT_TYPE_CONST, {.i64=0}, 0, 0, FLAGS, .unit = "orientation" },
{ "v", "vertical", 0, AV_OPT_TYPE_CONST, {.i64=1}, 0, 0, FLAGS, .unit = "orientation" },
{ "s", "set step size", OFFSET(step), AV_OPT_TYPE_INT, {.i64=0}, 0, 5, FLAGS },
{ "p", "set background opacity", OFFSET(bgopacity), AV_OPT_TYPE_FLOAT, {.dbl=0}, 0, 1, FLAGS },
{ "m", "set mode", OFFSET(mode), AV_OPT_TYPE_INT, {.i64=0}, 0, 1, FLAGS, .unit = "mode" },
{ "p", "peak", 0, AV_OPT_TYPE_CONST, {.i64=0}, 0, 0, FLAGS, .unit = "mode" },
{ "r", "rms", 0, AV_OPT_TYPE_CONST, {.i64=1}, 0, 0, FLAGS, .unit = "mode" },
{ "ds", "set display scale", OFFSET(display_scale), AV_OPT_TYPE_INT, {.i64=LINEAR}, LINEAR, NB_DISPLAY_SCALE - 1, FLAGS, .unit = "display_scale" },
{ "lin", "linear", 0, AV_OPT_TYPE_CONST, {.i64=LINEAR}, 0, 0, FLAGS, .unit = "display_scale" },
{ "log", "log", 0, AV_OPT_TYPE_CONST, {.i64=LOG}, 0, 0, FLAGS, .unit = "display_scale" },
{ NULL }
}

Definition at line 70 of file avf_showvolume.c.

◆ showvolume_inputs

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

Definition at line 489 of file avf_showvolume.c.

◆ showvolume_outputs

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

Definition at line 497 of file avf_showvolume.c.

◆ ff_avf_showvolume

const AVFilter ff_avf_showvolume
Initial value:
= {
.name = "showvolume",
.description = NULL_IF_CONFIG_SMALL("Convert input audio volume to video output."),
.init = init,
.activate = activate,
.uninit = uninit,
.priv_size = sizeof(ShowVolumeContext),
.priv_class = &showvolume_class,
}

Definition at line 505 of file avf_showvolume.c.

ShowVolumeContext
Definition: avf_showvolume.c:36
color
Definition: vf_paletteuse.c:513
showvolume_inputs
static const AVFilterPad showvolume_inputs[]
Definition: avf_showvolume.c:489
AV_OPT_TYPE_VIDEO_RATE
@ AV_OPT_TYPE_VIDEO_RATE
Underlying C type is AVRational.
Definition: opt.h:315
FILTER_INPUTS
#define FILTER_INPUTS(array)
Definition: filters.h:262
mode
Definition: swscale.c:52
step
trying all byte sequences megabyte in length and selecting the best looking sequence will yield cases to try But a word about which is also called distortion Distortion can be quantified by almost any quality measurement one chooses the sum of squared differences is used but more complex methods that consider psychovisual effects can be used as well It makes no difference in this discussion First step
Definition: rate_distortion.txt:58
w
uint8_t w
Definition: llviddspenc.c:38
b
#define b
Definition: input.c:41
LOG
@ LOG
Definition: avf_showvolume.c:34
AV_OPT_TYPE_DOUBLE
@ AV_OPT_TYPE_DOUBLE
Underlying C type is double.
Definition: opt.h:267
AVMEDIA_TYPE_AUDIO
@ AVMEDIA_TYPE_AUDIO
Definition: avutil.h:202
activate
static int activate(AVFilterContext *ctx)
Definition: avf_showvolume.c:449
init
static av_cold int init(AVFilterContext *ctx)
Definition: avf_showvolume.c:98
FILTER_OUTPUTS
#define FILTER_OUTPUTS(array)
Definition: filters.h:263
NULL
#define NULL
Definition: coverity.c:32
AV_OPT_TYPE_COLOR
@ AV_OPT_TYPE_COLOR
Underlying C type is uint8_t[4].
Definition: opt.h:323
config_output
static int config_output(AVFilterLink *outlink)
Definition: avf_showvolume.c:187
f
f
Definition: af_crystalizer.c: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:94
OFFSET
#define OFFSET(x)
Definition: avf_showvolume.c:67
query_formats
static int query_formats(const AVFilterContext *ctx, AVFilterFormatsConfig **cfg_in, AVFilterFormatsConfig **cfg_out)
Definition: avf_showvolume.c:113
AV_OPT_TYPE_FLOAT
@ AV_OPT_TYPE_FLOAT
Underlying C type is float.
Definition: opt.h:271
FILTER_QUERY_FUNC2
#define FILTER_QUERY_FUNC2(func)
Definition: filters.h:239
showvolume_outputs
static const AVFilterPad showvolume_outputs[]
Definition: avf_showvolume.c:497
LINEAR
@ LINEAR
Definition: avf_showvolume.c:34
draw_text
static void draw_text(FFDrawContext *draw, AVFrame *out, FFDrawColor *color, int x0, int y0, const uint8_t *text)
Definition: src_avsynctest.c:247
AV_OPT_TYPE_INT
@ AV_OPT_TYPE_INT
Underlying C type is int.
Definition: opt.h:259
FLAGS
#define FLAGS
Definition: avf_showvolume.c:68
AVMEDIA_TYPE_VIDEO
@ AVMEDIA_TYPE_VIDEO
Definition: avutil.h:201
AV_OPT_TYPE_BOOL
@ AV_OPT_TYPE_BOOL
Underlying C type is int.
Definition: opt.h:327
NB_DISPLAY_SCALE
@ NB_DISPLAY_SCALE
Definition: avf_showvolume.c:34
config_input
static int config_input(AVFilterLink *inlink)
Definition: avf_showvolume.c:152
uninit
static av_cold void uninit(AVFilterContext *ctx)
Definition: avf_showvolume.c:476
h
h
Definition: vp9dsp_template.c:2070
AV_OPT_TYPE_STRING
@ AV_OPT_TYPE_STRING
Underlying C type is a uint8_t* that is either NULL or points to a C string allocated with the av_mal...
Definition: opt.h:276
AV_OPT_TYPE_CONST
@ AV_OPT_TYPE_CONST
Special option type for declaring named constants.
Definition: opt.h:299