FFmpeg
Data Structures | Macros | Enumerations | Functions | Variables
avf_showvolume.c File Reference
#include "libavutil/avstring.h"
#include "libavutil/channel_layout.h"
#include "libavutil/eval.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/opt.h"
#include "libavutil/parseutils.h"
#include "libavutil/xga_font_data.h"
#include "avfilter.h"
#include "filters.h"
#include "formats.h"
#include "audio.h"
#include "video.h"
#include "internal.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 (AVFilterContext *ctx)
 
static void find_peak (float *src, int nb_samples, float *peak, float factor)
 
static void find_rms (float *src, int nb_samples, float *rms, float factor)
 
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 []
 
AVFilter ff_avf_showvolume
 

Macro Definition Documentation

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

Definition at line 71 of file avf_showvolume.c.

Definition at line 72 of file avf_showvolume.c.

Enumeration Type Documentation

anonymous enum
Enumerator
VAR_VOLUME 
VAR_CHANNEL 
VAR_PEAK 
VAR_VARS_NB 

Definition at line 36 of file avf_showvolume.c.

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

Definition at line 37 of file avf_showvolume.c.

Function Documentation

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

Definition at line 102 of file avf_showvolume.c.

static int query_formats ( AVFilterContext ctx)
static

Definition at line 117 of file avf_showvolume.c.

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

Definition at line 146 of file avf_showvolume.c.

Referenced by config_input().

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

Definition at line 155 of file avf_showvolume.c.

Referenced by config_input().

static int config_input ( AVFilterLink inlink)
static

Definition at line 163 of file avf_showvolume.c.

static int config_output ( AVFilterLink outlink)
static

Definition at line 197 of file avf_showvolume.c.

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

Definition at line 230 of file avf_showvolume.c.

Referenced by filter_frame().

static void clear_picture ( ShowVolumeContext s,
AVFilterLink outlink 
)
static

Definition at line 264 of file avf_showvolume.c.

Referenced by filter_frame().

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

Definition at line 276 of file avf_showvolume.c.

Referenced by filter_frame().

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

Definition at line 291 of file avf_showvolume.c.

Referenced by filter_frame().

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

Definition at line 302 of file avf_showvolume.c.

Referenced by filter_frame().

static int filter_frame ( AVFilterLink inlink,
AVFrame insamples 
)
static

Definition at line 318 of file avf_showvolume.c.

Referenced by activate().

static int activate ( AVFilterContext ctx)
static

Definition at line 450 of file avf_showvolume.c.

static av_cold void uninit ( AVFilterContext ctx)
static

Definition at line 472 of file avf_showvolume.c.

Variable Documentation

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

Definition at line 35 of file avf_showvolume.c.

Referenced by init().

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"}, CHAR_MIN, CHAR_MAX, FLAGS },
{ "o", "set orientation", OFFSET(orientation), AV_OPT_TYPE_INT, {.i64=0}, 0, 1, FLAGS, "orientation" },
{ "h", "horizontal", 0, AV_OPT_TYPE_CONST, {.i64=0}, 0, 0, FLAGS, "orientation" },
{ "v", "vertical", 0, AV_OPT_TYPE_CONST, {.i64=1}, 0, 0, FLAGS, "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, "mode" },
{ "p", "peak", 0, AV_OPT_TYPE_CONST, {.i64=0}, 0, 0, FLAGS, "mode" },
{ "r", "rms", 0, AV_OPT_TYPE_CONST, {.i64=1}, 0, 0, FLAGS, "mode" },
{ "ds", "set display scale", OFFSET(display_scale), AV_OPT_TYPE_INT, {.i64=LINEAR}, LINEAR, NB_DISPLAY_SCALE - 1, FLAGS, "display_scale" },
{ "lin", "linear", 0, AV_OPT_TYPE_CONST, {.i64=LINEAR}, 0, 0, FLAGS, "display_scale" },
{ "log", "log", 0, AV_OPT_TYPE_CONST, {.i64=LOG}, 0, 0, FLAGS, "display_scale" },
{ NULL }
}
#define NULL
Definition: coverity.c:32
#define f(width, name)
Definition: cbs_vp9.c:255
#define OFFSET(x)
#define b
Definition: input.c:41
uint8_t w
Definition: llviddspenc.c:38
static void draw_text(FFDrawContext *draw, AVFrame *frame, FFDrawColor *color, int x0, int y0, const uint8_t *text, int vertical)
Definition: vf_datascope.c:79
offset must point to AVRational
Definition: opt.h:236
#define FLAGS
mode
Use these values in ebur128_init (or'ed).
Definition: ebur128.h:83
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 at line 74 of file avf_showvolume.c.

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

Definition at line 483 of file avf_showvolume.c.

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

Definition at line 492 of file avf_showvolume.c.

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,
.query_formats = query_formats,
.priv_size = sizeof(ShowVolumeContext),
.priv_class = &showvolume_class,
}
static const AVFilterPad showvolume_outputs[]
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
Definition: internal.h:186
static const AVFilterPad showvolume_inputs[]
static const AVFilterPad outputs[]
Definition: af_acontrast.c:203
static int query_formats(AVFilterContext *ctx)
these buffered frames must be flushed immediately if a new input produces new the filter must not call request_frame to get more It must just process the frame or queue it The task of requesting more frames is left to the filter s request_frame method or the application If a filter has several inputs
static int activate(AVFilterContext *ctx)
static av_cold int init(AVFilterContext *ctx)
static av_cold void uninit(AVFilterContext *ctx)

Definition at line 501 of file avf_showvolume.c.