FFmpeg
Data Structures | Macros | Enumerations | Functions | Variables
avf_showspectrum.c File Reference
#include "config_components.h"
#include <float.h>
#include <math.h>
#include "libavutil/tx.h"
#include "libavutil/avassert.h"
#include "libavutil/avstring.h"
#include "libavutil/channel_layout.h"
#include "libavutil/cpu.h"
#include "libavutil/opt.h"
#include "libavutil/parseutils.h"
#include "libavutil/xga_font_data.h"
#include "audio.h"
#include "formats.h"
#include "video.h"
#include "avfilter.h"
#include "filters.h"
#include "internal.h"
#include "window_func.h"

Go to the source code of this file.

Data Structures

struct  ShowSpectrumContext
 
struct  ColorTable
 

Macros

#define DEFAULT_LENGTH   300
 
#define OFFSET(x)   offsetof(ShowSpectrumContext, x)
 
#define FLAGS   AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM
 
#define RE(y, ch)   s->fft_data[ch][y].re
 
#define IM(y, ch)   s->fft_data[ch][y].im
 
#define MAGNITUDE(y, ch)   hypotf(RE(y, ch), IM(y, ch))
 
#define PHASE(y, ch)   atan2f(IM(y, ch), RE(y, ch))
 

Enumerations

enum  DisplayMode {
  SINGLE, SEPARATE, NB_DMODES, LINE,
  BAR, DOT, NB_MODES, COMBINED,
  SEPARATE, NB_MODES
}
 
enum  DataMode {
  MAGNITUDE, PHASE, DELAY, NB_DATA,
  D_MAGNITUDE, D_PHASE, D_UPHASE, NB_DMODES
}
 
enum  FrequencyScale {
  FSCALE_LINEAR, FSCALE_LOG, FSCALE_BARK, FSCALE_MEL,
  FSCALE_ERBS, FSCALE_SQRT, FSCALE_CBRT, FSCALE_QDRT,
  FSCALE_FM, NB_FSCALE, FS_LINEAR, FS_LOG,
  FS_RLOG, NB_FSCALES, F_LINEAR, F_LOG,
  NB_FSCALES
}
 
enum  DisplayScale {
  LINEAR, SQRT, CBRT, LOG,
  RLOG, NB_SCALES, LINEAR, SQRT,
  CBRT, LOG, FOURTHRT, FIFTHRT,
  NB_SCALES, LINEAR, LOG, NB_DISPLAY_SCALE
}
 
enum  ColorMode {
  CHANNEL, INTENSITY, RAINBOW, MORELAND,
  NEBULAE, FIRE, FIERY, FRUIT,
  COOL, MAGMA, GREEN, VIRIDIS,
  PLASMA, CIVIDIS, TERRAIN, NB_CLMODES,
  COLOR_MODE_NONE = -1, COLOR_MODE_BT709, COLOR_MODE_FCC, COLOR_MODE_BT601,
  COLOR_MODE_SMPTE240M, COLOR_MODE_BT2020, COLOR_MODE_COUNT
}
 
enum  SlideMode {
  REPLACE, SCROLL, NB_SLIDES, SLIDE_REPLACE,
  SLIDE_SCROLL, SLIDE_FRAME, NB_SLIDE, REPLACE,
  SCROLL, FULLFRAME, RSCROLL, LREPLACE,
  NB_SLIDES, REPLACE, SCROLL, FULLFRAME,
  RSCROLL, NB_SLIDES
}
 
enum  Orientation {
  VERTICAL, HORIZONTAL, NB_ORIENTATIONS, VERTICAL,
  HORIZONTAL, NB_ORIENTATIONS
}
 

Functions

 AVFILTER_DEFINE_CLASS (showspectrum)
 
static av_cold void uninit (AVFilterContext *ctx)
 
static int query_formats (AVFilterContext *ctx)
 
static int run_channel_fft (AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs)
 
static void drawtext (AVFrame *pic, int x, int y, const char *txt, int o)
 
static void color_range (ShowSpectrumContext *s, int ch, float *yf, float *uf, float *vf)
 
static void pick_color (ShowSpectrumContext *s, float yf, float uf, float vf, float a, float *out)
 
static char * get_time (AVFilterContext *ctx, float seconds, int x)
 
static float log_scale (const float bin, const float bmin, const float bmax, const float min, const float max)
 
static float get_hz (const float bin, const float bmax, const float min, const float max, int fscale)
 
static float inv_log_scale (float bin, float bmin, float bmax, float min, float max)
 
static float bin_pos (const int bin, const int num_bins, const float min, const float max)
 
static float get_scale (AVFilterContext *ctx, int scale, float a)
 
static float get_iscale (AVFilterContext *ctx, int scale, float a)
 
static int draw_legend (AVFilterContext *ctx, uint64_t samples)
 
static float get_value (AVFilterContext *ctx, int ch, int y)
 
static int plot_channel_lin (AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs)
 
static int plot_channel_log (AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs)
 
static int config_output (AVFilterLink *outlink)
 
static int calc_channel_magnitudes (AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs)
 
static int calc_channel_phases (AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs)
 
static void unwrap (float *x, int N, float tol, float *mi, float *ma)
 
static int calc_channel_uphases (AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs)
 
static void acalc_magnitudes (ShowSpectrumContext *s)
 
static void scale_magnitudes (ShowSpectrumContext *s, float scale)
 
static void clear_combine_buffer (ShowSpectrumContext *s, int size)
 
static int plot_spectrum_column (AVFilterLink *inlink, AVFrame *insamples)
 

Variables

static const AVOption showspectrum_options []
 
static const struct ColorTable color_table [][8]
 

Detailed Description

audio to spectrum (video) transmedia filter, based on ffplay rdft showmode (by Michael Niedermayer) and lavfi/avf_showwaves (by Stefano Sabatini).

Definition in file avf_showspectrum.c.

Macro Definition Documentation

◆ DEFAULT_LENGTH

#define DEFAULT_LENGTH   300

Definition at line 58 of file avf_showspectrum.c.

◆ OFFSET

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

Definition at line 122 of file avf_showspectrum.c.

◆ FLAGS

Definition at line 123 of file avf_showspectrum.c.

◆ RE

#define RE (   y,
  ch 
)    s->fft_data[ch][y].re

Definition at line 1315 of file avf_showspectrum.c.

◆ IM

#define IM (   y,
  ch 
)    s->fft_data[ch][y].im

Definition at line 1316 of file avf_showspectrum.c.

◆ MAGNITUDE

#define MAGNITUDE (   y,
  ch 
)    hypotf(RE(y, ch), IM(y, ch))

Definition at line 1317 of file avf_showspectrum.c.

◆ PHASE

#define PHASE (   y,
  ch 
)    atan2f(IM(y, ch), RE(y, ch))

Definition at line 1318 of file avf_showspectrum.c.

Enumeration Type Documentation

◆ DisplayMode

Enumerator
SINGLE 
SEPARATE 
NB_DMODES 
LINE 
BAR 
DOT 
NB_MODES 
COMBINED 
SEPARATE 
NB_MODES 

Definition at line 50 of file avf_showspectrum.c.

◆ DataMode

enum DataMode
Enumerator
MAGNITUDE 
PHASE 
DELAY 
NB_DATA 
D_MAGNITUDE 
D_PHASE 
D_UPHASE 
NB_DMODES 

Definition at line 51 of file avf_showspectrum.c.

◆ FrequencyScale

Enumerator
FSCALE_LINEAR 
FSCALE_LOG 
FSCALE_BARK 
FSCALE_MEL 
FSCALE_ERBS 
FSCALE_SQRT 
FSCALE_CBRT 
FSCALE_QDRT 
FSCALE_FM 
NB_FSCALE 
FS_LINEAR 
FS_LOG 
FS_RLOG 
NB_FSCALES 
F_LINEAR 
F_LOG 
NB_FSCALES 

Definition at line 52 of file avf_showspectrum.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 53 of file avf_showspectrum.c.

◆ ColorMode

enum ColorMode
Enumerator
CHANNEL 
INTENSITY 
RAINBOW 
MORELAND 
NEBULAE 
FIRE 
FIERY 
FRUIT 
COOL 
MAGMA 
GREEN 
VIRIDIS 
PLASMA 
CIVIDIS 
TERRAIN 
NB_CLMODES 
COLOR_MODE_NONE 
COLOR_MODE_BT709 
COLOR_MODE_FCC 
COLOR_MODE_BT601 
COLOR_MODE_SMPTE240M 
COLOR_MODE_BT2020 
COLOR_MODE_COUNT 

Definition at line 54 of file avf_showspectrum.c.

◆ SlideMode

enum SlideMode
Enumerator
REPLACE 
SCROLL 
NB_SLIDES 
SLIDE_REPLACE 
SLIDE_SCROLL 
SLIDE_FRAME 
NB_SLIDE 
REPLACE 
SCROLL 
FULLFRAME 
RSCROLL 
LREPLACE 
NB_SLIDES 
REPLACE 
SCROLL 
FULLFRAME 
RSCROLL 
NB_SLIDES 

Definition at line 55 of file avf_showspectrum.c.

◆ Orientation

Enumerator
VERTICAL 
HORIZONTAL 
NB_ORIENTATIONS 
VERTICAL 
HORIZONTAL 
NB_ORIENTATIONS 

Definition at line 56 of file avf_showspectrum.c.

Function Documentation

◆ AVFILTER_DEFINE_CLASS()

AVFILTER_DEFINE_CLASS ( showspectrum  )

◆ uninit()

static av_cold void uninit ( AVFilterContext ctx)
static

Definition at line 303 of file avf_showspectrum.c.

◆ query_formats()

static int query_formats ( AVFilterContext ctx)
static

Definition at line 361 of file avf_showspectrum.c.

◆ run_channel_fft()

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

Definition at line 392 of file avf_showspectrum.c.

◆ drawtext()

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

Definition at line 499 of file avf_showspectrum.c.

Referenced by draw_legend(), and plot_spectrum_column().

◆ color_range()

static void color_range ( ShowSpectrumContext s,
int  ch,
float yf,
float uf,
float vf 
)
static

Definition at line 554 of file avf_showspectrum.c.

Referenced by plot_channel_lin(), and plot_channel_log().

◆ pick_color()

static void pick_color ( ShowSpectrumContext s,
float  yf,
float  uf,
float  vf,
float  a,
float out 
)
static

Definition at line 616 of file avf_showspectrum.c.

Referenced by draw_legend(), plot_channel_lin(), and plot_channel_log().

◆ get_time()

static char* get_time ( AVFilterContext ctx,
float  seconds,
int  x 
)
static

Definition at line 664 of file avf_showspectrum.c.

Referenced by draw_legend(), and plot_spectrum_column().

◆ log_scale()

static float log_scale ( const float  bin,
const float  bmin,
const float  bmax,
const float  min,
const float  max 
)
static

Definition at line 679 of file avf_showspectrum.c.

Referenced by get_hz().

◆ get_hz()

static float get_hz ( const float  bin,
const float  bmax,
const float  min,
const float  max,
int  fscale 
)
static

Definition at line 686 of file avf_showspectrum.c.

Referenced by draw_legend().

◆ inv_log_scale()

static float inv_log_scale ( float  bin,
float  bmin,
float  bmax,
float  min,
float  max 
)
static

Definition at line 700 of file avf_showspectrum.c.

Referenced by bin_pos().

◆ bin_pos()

static float bin_pos ( const int  bin,
const int  num_bins,
const float  min,
const float  max 
)
static

Definition at line 707 of file avf_showspectrum.c.

Referenced by plot_channel_log().

◆ get_scale()

static float get_scale ( AVFilterContext ctx,
int  scale,
float  a 
)
static

Definition at line 712 of file avf_showspectrum.c.

Referenced by get_value().

◆ get_iscale()

static float get_iscale ( AVFilterContext ctx,
int  scale,
float  a 
)
static

Definition at line 747 of file avf_showspectrum.c.

Referenced by draw_legend().

◆ draw_legend()

static int draw_legend ( AVFilterContext ctx,
uint64_t  samples 
)
static

Definition at line 781 of file avf_showspectrum.c.

Referenced by config_output().

◆ get_value()

static float get_value ( AVFilterContext ctx,
int  ch,
int  y 
)
static

Definition at line 983 of file avf_showspectrum.c.

Referenced by plot_channel_lin(), and plot_channel_log().

◆ plot_channel_lin()

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

Definition at line 1007 of file avf_showspectrum.c.

Referenced by config_output().

◆ plot_channel_log()

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

Definition at line 1030 of file avf_showspectrum.c.

Referenced by config_output().

◆ config_output()

static int config_output ( AVFilterLink outlink)
static

Definition at line 1061 of file avf_showspectrum.c.

◆ calc_channel_magnitudes()

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

Definition at line 1320 of file avf_showspectrum.c.

◆ calc_channel_phases()

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

Definition at line 1335 of file avf_showspectrum.c.

◆ unwrap()

static void unwrap ( float x,
int  N,
float  tol,
float mi,
float ma 
)
static

Definition at line 1349 of file avf_showspectrum.c.

Referenced by calc_channel_uphases().

◆ calc_channel_uphases()

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

Definition at line 1370 of file avf_showspectrum.c.

◆ acalc_magnitudes()

static void acalc_magnitudes ( ShowSpectrumContext s)
static

Definition at line 1389 of file avf_showspectrum.c.

◆ scale_magnitudes()

static void scale_magnitudes ( ShowSpectrumContext s,
float  scale 
)
static

Definition at line 1403 of file avf_showspectrum.c.

◆ clear_combine_buffer()

static void clear_combine_buffer ( ShowSpectrumContext s,
int  size 
)
static

Definition at line 1415 of file avf_showspectrum.c.

Referenced by plot_spectrum_column().

◆ plot_spectrum_column()

static int plot_spectrum_column ( AVFilterLink inlink,
AVFrame insamples 
)
static

Definition at line 1427 of file avf_showspectrum.c.

Variable Documentation

◆ showspectrum_options

const AVOption showspectrum_options[]
static

Definition at line 125 of file avf_showspectrum.c.

◆ color_table

const struct ColorTable color_table[][8]
static

Referenced by pick_color().