| 
    FFmpeg
    
   | 
 
EBU R.128 implementation. More...
#include <math.h>#include "libavutil/avassert.h"#include "libavutil/avstring.h"#include "libavutil/channel_layout.h"#include "libavutil/dict.h"#include "libavutil/ffmath.h"#include "libavutil/xga_font_data.h"#include "libavutil/opt.h"#include "libavutil/timestamp.h"#include "libswresample/swresample.h"#include "audio.h"#include "avfilter.h"#include "formats.h"#include "internal.h"Go to the source code of this file.
Data Structures | |
| struct | hist_entry | 
| A histogram is an array of HIST_SIZE hist_entry storing all the energies recorded (with an accuracy of 1/HIST_GRAIN) of the loudnesses from ABS_THRES (at 0) to ABS_UP_THRES (at HIST_SIZE-1).  More... | |
| struct | integrator | 
| struct | rect | 
| struct | EBUR128Context | 
Macros | |
| #define | MAX_CHANNELS 63 | 
| #define | PRE_B0 1.53512485958697 | 
| #define | PRE_B1 -2.69169618940638 | 
| #define | PRE_B2 1.19839281085285 | 
| #define | PRE_A1 -1.69065929318241 | 
| #define | PRE_A2 0.73248077421585 | 
| #define | RLB_B0 1.0 | 
| #define | RLB_B1 -2.0 | 
| #define | RLB_B2 1.0 | 
| #define | RLB_A1 -1.99004745483398 | 
| #define | RLB_A2 0.99007225036621 | 
| #define | ABS_THRES -70 | 
| silence gate: we discard anything below this absolute (LUFS) threshold  More... | |
| #define | ABS_UP_THRES 10 | 
| upper loud limit to consider (ABS_THRES being the minimum)  More... | |
| #define | HIST_GRAIN 100 | 
| defines histogram precision  More... | |
| #define | HIST_SIZE ((ABS_UP_THRES - ABS_THRES) * HIST_GRAIN + 1) | 
| #define | I400_BINS (48000 * 4 / 10) | 
| #define | I3000_BINS (48000 * 3) | 
| #define | OFFSET(x) offsetof(EBUR128Context, x) | 
| #define | A AV_OPT_FLAG_AUDIO_PARAM | 
| #define | V AV_OPT_FLAG_VIDEO_PARAM | 
| #define | F AV_OPT_FLAG_FILTERING_PARAM | 
| #define | FONT8 0 | 
| #define | FONT16 1 | 
| #define | PAD 8 | 
| #define | DRAW_RECT(r) | 
| #define | BACK_MASK | 
| #define | ENERGY(loudness) (ff_exp10(((loudness) + 0.691) / 10.)) | 
| #define | LOUDNESS(energy) (-0.691 + 10 * log10(energy)) | 
| #define | DBFS(energy) (20 * log10(energy)) | 
| #define | HIST_POS(power) (int)(((power) - ABS_THRES) * HIST_GRAIN) | 
| #define | MOVE_TO_NEXT_CACHED_ENTRY(time) | 
| #define | FILTER(Y, X, name) | 
| #define | COMPUTE_LOUDNESS(m, time) | 
| #define | I_GATE_THRES -10 | 
| #define | LRA_GATE_THRES -20 | 
| #define | LRA_LOWER_PRC 10 | 
| #define | LRA_HIGHER_PRC 95 | 
| #define | LOG_FMT "M:%6.1f S:%6.1f I:%6.1f LUFS LRA:%6.1f LU" | 
| #define | META_PREFIX "lavfi.r128." | 
| #define | SET_META(name, var) | 
| #define | SET_META_PEAK(name, ptype) | 
| #define | PRINT_PEAKS(str, sp, ptype) | 
| #define | PRINT_PEAK_SUMMARY(str, sp, ptype) | 
Enumerations | |
| enum | { PEAK_MODE_NONE = 0, PEAK_MODE_SAMPLES_PEAKS = 1<<1, PEAK_MODE_TRUE_PEAKS = 1<<2 } | 
Functions | |
| AVFILTER_DEFINE_CLASS (ebur128) | |
| static const uint8_t * | get_graph_color (const EBUR128Context *ebur128, int v, int y) | 
| static int | lu_to_y (const EBUR128Context *ebur128, double v) | 
| static void | drawtext (AVFrame *pic, int x, int y, int ftid, const uint8_t *color, const char *fmt,...) | 
| static void | drawline (AVFrame *pic, int x, int y, int len, int step) | 
| static int | config_video_output (AVFilterLink *outlink) | 
| static int | config_audio_input (AVFilterLink *inlink) | 
| static int | config_audio_output (AVFilterLink *outlink) | 
| static struct hist_entry * | get_histogram (void) | 
| static av_cold int | init (AVFilterContext *ctx) | 
| static int | gate_update (struct integrator *integ, double power, double loudness, int gate_thres) | 
| static int | filter_frame (AVFilterLink *inlink, AVFrame *insamples) | 
| static int | query_formats (AVFilterContext *ctx) | 
| static av_cold void | uninit (AVFilterContext *ctx) | 
Variables | |
| static const AVOption | ebur128_options [] | 
| static const uint8_t | graph_colors [] | 
| static const uint8_t | font_colors [] | 
| static const AVFilterPad | ebur128_inputs [] | 
| AVFilter | ff_af_ebur128 | 
EBU R.128 implementation.
implement start/stop/reset through filter command injection
support other frequencies to avoid resampling
Definition in file f_ebur128.c.
| #define MAX_CHANNELS 63 | 
Definition at line 46 of file f_ebur128.c.
| #define PRE_B0 1.53512485958697 | 
Definition at line 49 of file f_ebur128.c.
| #define PRE_B1 -2.69169618940638 | 
Definition at line 50 of file f_ebur128.c.
| #define PRE_B2 1.19839281085285 | 
Definition at line 51 of file f_ebur128.c.
| #define PRE_A1 -1.69065929318241 | 
Definition at line 52 of file f_ebur128.c.
| #define PRE_A2 0.73248077421585 | 
Definition at line 53 of file f_ebur128.c.
| #define RLB_B0 1.0 | 
Definition at line 56 of file f_ebur128.c.
| #define RLB_B1 -2.0 | 
Definition at line 57 of file f_ebur128.c.
| #define RLB_B2 1.0 | 
Definition at line 58 of file f_ebur128.c.
| #define RLB_A1 -1.99004745483398 | 
Definition at line 59 of file f_ebur128.c.
| #define RLB_A2 0.99007225036621 | 
Definition at line 60 of file f_ebur128.c.
| #define ABS_THRES -70 | 
silence gate: we discard anything below this absolute (LUFS) threshold
Definition at line 62 of file f_ebur128.c.
Referenced by filter_frame(), get_histogram(), and init().
| #define ABS_UP_THRES 10 | 
upper loud limit to consider (ABS_THRES being the minimum)
Definition at line 63 of file f_ebur128.c.
| #define HIST_GRAIN 100 | 
defines histogram precision
Definition at line 64 of file f_ebur128.c.
Referenced by get_histogram().
| #define HIST_SIZE ((ABS_UP_THRES - ABS_THRES) * HIST_GRAIN + 1) | 
Definition at line 65 of file f_ebur128.c.
Referenced by filter(), filter_frame(), gate_update(), get_histogram(), and init().
| #define I400_BINS (48000 * 4 / 10) | 
Definition at line 130 of file f_ebur128.c.
Referenced by config_audio_output().
| #define I3000_BINS (48000 * 3) | 
Definition at line 131 of file f_ebur128.c.
Referenced by config_audio_output().
| #define OFFSET | ( | x | ) | offsetof(EBUR128Context, x) | 
Definition at line 153 of file f_ebur128.c.
| #define A AV_OPT_FLAG_AUDIO_PARAM | 
Definition at line 154 of file f_ebur128.c.
| #define V AV_OPT_FLAG_VIDEO_PARAM | 
Definition at line 155 of file f_ebur128.c.
| #define F AV_OPT_FLAG_FILTERING_PARAM | 
Definition at line 156 of file f_ebur128.c.
| #define FONT8 0 | 
Definition at line 204 of file f_ebur128.c.
Referenced by config_video_output(), and drawtext().
| #define FONT16 1 | 
Definition at line 205 of file f_ebur128.c.
Referenced by drawtext(), and filter_frame().
| #define PAD 8 | 
Referenced by config_video_output(), filter_frame(), and register_all().
| #define DRAW_RECT | ( | r | ) | 
Referenced by config_video_output().
| #define BACK_MASK | 
Referenced by config_audio_output().
| #define ENERGY | ( | loudness | ) | (ff_exp10(((loudness) + 0.691) / 10.)) | 
Definition at line 440 of file f_ebur128.c.
Referenced by get_histogram().
| #define LOUDNESS | ( | energy | ) | (-0.691 + 10 * log10(energy)) | 
Definition at line 441 of file f_ebur128.c.
Referenced by filter_frame(), and gate_update().
| #define DBFS | ( | energy | ) | (20 * log10(energy)) | 
Definition at line 442 of file f_ebur128.c.
| #define HIST_POS | ( | power | ) | (int)(((power) - ABS_THRES) * HIST_GRAIN) | 
Definition at line 515 of file f_ebur128.c.
Referenced by gate_update().
| #define MOVE_TO_NEXT_CACHED_ENTRY | ( | time | ) | 
Referenced by filter_frame().
Referenced by filter_frame().
| #define COMPUTE_LOUDNESS | ( | m, | |
| time | |||
| ) | 
Referenced by filter_frame().
| #define I_GATE_THRES -10 | 
Referenced by filter_frame().
| #define LRA_GATE_THRES -20 | 
Referenced by filter_frame().
| #define LRA_LOWER_PRC 10 | 
Referenced by filter_frame().
| #define LRA_HIGHER_PRC 95 | 
Referenced by filter_frame().
| #define LOG_FMT "M:%6.1f S:%6.1f I:%6.1f LUFS LRA:%6.1f LU" | 
Referenced by filter_frame().
| #define META_PREFIX "lavfi.r128." | 
Referenced by filter_frame().
| #define SET_META | ( | name, | |
| var | |||
| ) | 
Referenced by filter_frame().
| #define SET_META_PEAK | ( | name, | |
| ptype | |||
| ) | 
Referenced by filter_frame().
| #define PRINT_PEAKS | ( | str, | |
| sp, | |||
| ptype | |||
| ) | 
Referenced by filter_frame().
| #define PRINT_PEAK_SUMMARY | ( | str, | |
| sp, | |||
| ptype | |||
| ) | 
Referenced by uninit().
| anonymous enum | 
| Enumerator | |
|---|---|
| PEAK_MODE_NONE | |
| PEAK_MODE_SAMPLES_PEAKS | |
| PEAK_MODE_TRUE_PEAKS | |
Definition at line 147 of file f_ebur128.c.
| AVFILTER_DEFINE_CLASS | ( | ebur128 | ) | 
      
  | 
  static | 
Definition at line 187 of file f_ebur128.c.
Referenced by config_video_output(), and filter_frame().
      
  | 
  inlinestatic | 
Definition at line 196 of file f_ebur128.c.
Referenced by config_video_output(), and filter_frame().
      
  | 
  static | 
Definition at line 212 of file f_ebur128.c.
Referenced by config_video_output(), and filter_frame().
Definition at line 245 of file f_ebur128.c.
      
  | 
  static | 
Definition at line 256 of file f_ebur128.c.
Referenced by init().
      
  | 
  static | 
Definition at line 349 of file f_ebur128.c.
      
  | 
  static | 
Definition at line 367 of file f_ebur128.c.
Referenced by init().
      
  | 
  static | 
Definition at line 444 of file f_ebur128.c.
Referenced by init().
      
  | 
  static | 
Definition at line 458 of file f_ebur128.c.
      
  | 
  static | 
Definition at line 519 of file f_ebur128.c.
Referenced by filter_frame().
      
  | 
  static | 
Definition at line 542 of file f_ebur128.c.
      
  | 
  static | 
Definition at line 825 of file f_ebur128.c.
      
  | 
  static | 
Definition at line 867 of file f_ebur128.c.
      
  | 
  static | 
Definition at line 157 of file f_ebur128.c.
      
  | 
  static | 
Definition at line 176 of file f_ebur128.c.
Referenced by get_graph_color().
      
  | 
  static | 
Definition at line 207 of file f_ebur128.c.
Referenced by config_video_output(), and filter_frame().
      
  | 
  static | 
Definition at line 930 of file f_ebur128.c.
| AVFilter ff_af_ebur128 | 
Definition at line 940 of file f_ebur128.c.
 1.8.6