FFmpeg  4.3
Data Structures | Macros | Enumerations | Functions | Variables
avf_showwaves.c File Reference
#include "libavutil/avassert.h"
#include "libavutil/avstring.h"
#include "libavutil/channel_layout.h"
#include "libavutil/opt.h"
#include "libavutil/parseutils.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  frame_node
 
struct  ShowWavesContext
 

Macros

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

Enumerations

enum  ShowWavesMode {
  MODE_POINT, MODE_LINE, MODE_P2P, MODE_CENTERED_LINE,
  MODE_NB
}
 
enum  ShowWavesScale {
  SCALE_LIN, SCALE_LOG, SCALE_SQRT, SCALE_CBRT,
  SCALE_NB
}
 
enum  ShowWavesDrawMode { DRAW_SCALE, DRAW_FULL, DRAW_NB }
 

Functions

 AVFILTER_DEFINE_CLASS (showwaves)
 
static av_cold void uninit (AVFilterContext *ctx)
 
static int query_formats (AVFilterContext *ctx)
 
static int get_lin_h (int16_t sample, int height)
 
static int get_lin_h2 (int16_t sample, int height)
 
static int get_log_h (int16_t sample, int height)
 
static int get_log_h2 (int16_t sample, int height)
 
static int get_sqrt_h (int16_t sample, int height)
 
static int get_sqrt_h2 (int16_t sample, int height)
 
static int get_cbrt_h (int16_t sample, int height)
 
static int get_cbrt_h2 (int16_t sample, int height)
 
static void draw_sample_point_rgba_scale (uint8_t *buf, int height, int linesize, int16_t *prev_y, const uint8_t color[4], int h)
 
static void draw_sample_point_rgba_full (uint8_t *buf, int height, int linesize, int16_t *prev_y, const uint8_t color[4], int h)
 
static void draw_sample_line_rgba_scale (uint8_t *buf, int height, int linesize, int16_t *prev_y, const uint8_t color[4], int h)
 
static void draw_sample_line_rgba_full (uint8_t *buf, int height, int linesize, int16_t *prev_y, const uint8_t color[4], int h)
 
static void draw_sample_p2p_rgba_scale (uint8_t *buf, int height, int linesize, int16_t *prev_y, const uint8_t color[4], int h)
 
static void draw_sample_p2p_rgba_full (uint8_t *buf, int height, int linesize, int16_t *prev_y, const uint8_t color[4], int h)
 
static void draw_sample_cline_rgba_scale (uint8_t *buf, int height, int linesize, int16_t *prev_y, const uint8_t color[4], int h)
 
static void draw_sample_cline_rgba_full (uint8_t *buf, int height, int linesize, int16_t *prev_y, const uint8_t color[4], int h)
 
static void draw_sample_point_gray (uint8_t *buf, int height, int linesize, int16_t *prev_y, const uint8_t color[4], int h)
 
static void draw_sample_line_gray (uint8_t *buf, int height, int linesize, int16_t *prev_y, const uint8_t color[4], int h)
 
static void draw_sample_p2p_gray (uint8_t *buf, int height, int linesize, int16_t *prev_y, const uint8_t color[4], int h)
 
static void draw_sample_cline_gray (uint8_t *buf, int height, int linesize, int16_t *prev_y, const uint8_t color[4], int h)
 
static int config_output (AVFilterLink *outlink)
 
static int push_frame (AVFilterLink *outlink)
 
static int push_single_pic (AVFilterLink *outlink)
 
static int request_frame (AVFilterLink *outlink)
 
static int alloc_out_frame (ShowWavesContext *showwaves, const int16_t *p, const AVFilterLink *inlink, AVFilterLink *outlink, const AVFrame *in)
 
static av_cold int init (AVFilterContext *ctx)
 

Variables

static const AVOption showwaves_options []
 

Detailed Description

audio to video multimedia filter

Definition in file avf_showwaves.c.

Macro Definition Documentation

◆ OFFSET

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

Definition at line 94 of file avf_showwaves.c.

◆ FLAGS

Definition at line 95 of file avf_showwaves.c.

Enumeration Type Documentation

◆ ShowWavesMode

Enumerator
MODE_POINT 
MODE_LINE 
MODE_P2P 
MODE_CENTERED_LINE 
MODE_NB 

Definition at line 38 of file avf_showwaves.c.

◆ ShowWavesScale

Enumerator
SCALE_LIN 
SCALE_LOG 
SCALE_SQRT 
SCALE_CBRT 
SCALE_NB 

Definition at line 46 of file avf_showwaves.c.

◆ ShowWavesDrawMode

Enumerator
DRAW_SCALE 
DRAW_FULL 
DRAW_NB 

Definition at line 54 of file avf_showwaves.c.

Function Documentation

◆ AVFILTER_DEFINE_CLASS()

AVFILTER_DEFINE_CLASS ( showwaves  )

◆ uninit()

static av_cold void uninit ( AVFilterContext ctx)
static

Definition at line 123 of file avf_showwaves.c.

◆ query_formats()

static int query_formats ( AVFilterContext ctx)
static

Definition at line 145 of file avf_showwaves.c.

◆ get_lin_h()

static int get_lin_h ( int16_t  sample,
int  height 
)
static

Definition at line 176 of file avf_showwaves.c.

Referenced by config_output().

◆ get_lin_h2()

static int get_lin_h2 ( int16_t  sample,
int  height 
)
static

Definition at line 181 of file avf_showwaves.c.

Referenced by config_output().

◆ get_log_h()

static int get_log_h ( int16_t  sample,
int  height 
)
static

Definition at line 186 of file avf_showwaves.c.

Referenced by config_output().

◆ get_log_h2()

static int get_log_h2 ( int16_t  sample,
int  height 
)
static

Definition at line 191 of file avf_showwaves.c.

Referenced by config_output().

◆ get_sqrt_h()

static int get_sqrt_h ( int16_t  sample,
int  height 
)
static

Definition at line 196 of file avf_showwaves.c.

Referenced by config_output().

◆ get_sqrt_h2()

static int get_sqrt_h2 ( int16_t  sample,
int  height 
)
static

Definition at line 201 of file avf_showwaves.c.

Referenced by config_output().

◆ get_cbrt_h()

static int get_cbrt_h ( int16_t  sample,
int  height 
)
static

Definition at line 206 of file avf_showwaves.c.

Referenced by config_output().

◆ get_cbrt_h2()

static int get_cbrt_h2 ( int16_t  sample,
int  height 
)
static

Definition at line 211 of file avf_showwaves.c.

Referenced by config_output().

◆ draw_sample_point_rgba_scale()

static void draw_sample_point_rgba_scale ( uint8_t buf,
int  height,
int  linesize,
int16_t *  prev_y,
const uint8_t  color[4],
int  h 
)
static

Definition at line 216 of file avf_showwaves.c.

Referenced by config_output().

◆ draw_sample_point_rgba_full()

static void draw_sample_point_rgba_full ( uint8_t buf,
int  height,
int  linesize,
int16_t *  prev_y,
const uint8_t  color[4],
int  h 
)
static

Definition at line 228 of file avf_showwaves.c.

Referenced by config_output().

◆ draw_sample_line_rgba_scale()

static void draw_sample_line_rgba_scale ( uint8_t buf,
int  height,
int  linesize,
int16_t *  prev_y,
const uint8_t  color[4],
int  h 
)
static

Definition at line 240 of file avf_showwaves.c.

Referenced by config_output().

◆ draw_sample_line_rgba_full()

static void draw_sample_line_rgba_full ( uint8_t buf,
int  height,
int  linesize,
int16_t *  prev_y,
const uint8_t  color[4],
int  h 
)
static

Definition at line 257 of file avf_showwaves.c.

Referenced by config_output().

◆ draw_sample_p2p_rgba_scale()

static void draw_sample_p2p_rgba_scale ( uint8_t buf,
int  height,
int  linesize,
int16_t *  prev_y,
const uint8_t  color[4],
int  h 
)
static

Definition at line 274 of file avf_showwaves.c.

Referenced by config_output().

◆ draw_sample_p2p_rgba_full()

static void draw_sample_p2p_rgba_full ( uint8_t buf,
int  height,
int  linesize,
int16_t *  prev_y,
const uint8_t  color[4],
int  h 
)
static

Definition at line 300 of file avf_showwaves.c.

Referenced by config_output().

◆ draw_sample_cline_rgba_scale()

static void draw_sample_cline_rgba_scale ( uint8_t buf,
int  height,
int  linesize,
int16_t *  prev_y,
const uint8_t  color[4],
int  h 
)
static

Definition at line 326 of file avf_showwaves.c.

Referenced by config_output().

◆ draw_sample_cline_rgba_full()

static void draw_sample_cline_rgba_full ( uint8_t buf,
int  height,
int  linesize,
int16_t *  prev_y,
const uint8_t  color[4],
int  h 
)
static

Definition at line 340 of file avf_showwaves.c.

Referenced by config_output().

◆ draw_sample_point_gray()

static void draw_sample_point_gray ( uint8_t buf,
int  height,
int  linesize,
int16_t *  prev_y,
const uint8_t  color[4],
int  h 
)
static

Definition at line 355 of file avf_showwaves.c.

Referenced by config_output().

◆ draw_sample_line_gray()

static void draw_sample_line_gray ( uint8_t buf,
int  height,
int  linesize,
int16_t *  prev_y,
const uint8_t  color[4],
int  h 
)
static

Definition at line 363 of file avf_showwaves.c.

Referenced by config_output().

◆ draw_sample_p2p_gray()

static void draw_sample_p2p_gray ( uint8_t buf,
int  height,
int  linesize,
int16_t *  prev_y,
const uint8_t  color[4],
int  h 
)
static

Definition at line 376 of file avf_showwaves.c.

Referenced by config_output().

◆ draw_sample_cline_gray()

static void draw_sample_cline_gray ( uint8_t buf,
int  height,
int  linesize,
int16_t *  prev_y,
const uint8_t  color[4],
int  h 
)
static

Definition at line 395 of file avf_showwaves.c.

Referenced by config_output().

◆ config_output()

static int config_output ( AVFilterLink outlink)
static

Definition at line 406 of file avf_showwaves.c.

◆ push_frame()

static int push_frame ( AVFilterLink outlink)
inlinestatic

Definition at line 542 of file avf_showwaves.c.

Referenced by push_single_pic(), and request_frame().

◆ push_single_pic()

static int push_single_pic ( AVFilterLink outlink)
static

Definition at line 558 of file avf_showwaves.c.

Referenced by request_frame().

◆ request_frame()

static int request_frame ( AVFilterLink outlink)
static

Definition at line 619 of file avf_showwaves.c.

◆ alloc_out_frame()

static int alloc_out_frame ( ShowWavesContext showwaves,
const int16_t *  p,
const AVFilterLink inlink,
AVFilterLink outlink,
const AVFrame in 
)
static

Definition at line 636 of file avf_showwaves.c.

◆ init()

static av_cold int init ( AVFilterContext ctx)
static

Definition at line 657 of file avf_showwaves.c.

Variable Documentation

◆ showwaves_options

const AVOption showwaves_options[]
static
Initial value:
= {
{ "size", "set video size", OFFSET(w), AV_OPT_TYPE_IMAGE_SIZE, {.str = "600x240"}, 0, 0, FLAGS },
{ "s", "set video size", OFFSET(w), AV_OPT_TYPE_IMAGE_SIZE, {.str = "600x240"}, 0, 0, FLAGS },
{ "mode", "select display mode", OFFSET(mode), AV_OPT_TYPE_INT, {.i64=MODE_POINT}, 0, MODE_NB-1, FLAGS, "mode"},
{ "point", "draw a point for each sample", 0, AV_OPT_TYPE_CONST, {.i64=MODE_POINT}, .flags=FLAGS, .unit="mode"},
{ "line", "draw a line for each sample", 0, AV_OPT_TYPE_CONST, {.i64=MODE_LINE}, .flags=FLAGS, .unit="mode"},
{ "p2p", "draw a line between samples", 0, AV_OPT_TYPE_CONST, {.i64=MODE_P2P}, .flags=FLAGS, .unit="mode"},
{ "cline", "draw a centered line for each sample", 0, AV_OPT_TYPE_CONST, {.i64=MODE_CENTERED_LINE}, .flags=FLAGS, .unit="mode"},
{ "n", "set how many samples to show in the same point", OFFSET(n), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, FLAGS },
{ "rate", "set video rate", OFFSET(rate), AV_OPT_TYPE_VIDEO_RATE, {.str = "25"}, 0, INT_MAX, FLAGS },
{ "r", "set video rate", OFFSET(rate), AV_OPT_TYPE_VIDEO_RATE, {.str = "25"}, 0, INT_MAX, FLAGS },
{ "split_channels", "draw channels separately", OFFSET(split_channels), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, FLAGS },
{ "colors", "set channels colors", OFFSET(colors), AV_OPT_TYPE_STRING, {.str = "red|green|blue|yellow|orange|lime|pink|magenta|brown" }, 0, 0, FLAGS },
{ "scale", "set amplitude scale", OFFSET(scale), AV_OPT_TYPE_INT, {.i64 = 0 }, 0, SCALE_NB-1, FLAGS, .unit="scale" },
{ "lin", "linear", 0, AV_OPT_TYPE_CONST, {.i64=SCALE_LIN}, .flags=FLAGS, .unit="scale"},
{ "log", "logarithmic", 0, AV_OPT_TYPE_CONST, {.i64=SCALE_LOG}, .flags=FLAGS, .unit="scale"},
{ "sqrt", "square root", 0, AV_OPT_TYPE_CONST, {.i64=SCALE_SQRT}, .flags=FLAGS, .unit="scale"},
{ "cbrt", "cubic root", 0, AV_OPT_TYPE_CONST, {.i64=SCALE_CBRT}, .flags=FLAGS, .unit="scale"},
{ "draw", "set draw mode", OFFSET(draw_mode), AV_OPT_TYPE_INT, {.i64 = DRAW_SCALE}, 0, DRAW_NB-1, FLAGS, .unit="draw" },
{ "scale", "scale pixel values for each drawn sample", 0, AV_OPT_TYPE_CONST, {.i64=DRAW_SCALE}, .flags=FLAGS, .unit="draw"},
{ "full", "draw every pixel for sample directly", 0, AV_OPT_TYPE_CONST, {.i64=DRAW_FULL}, .flags=FLAGS, .unit="draw"},
{ NULL }
}

Definition at line 97 of file avf_showwaves.c.

SCALE_SQRT
@ SCALE_SQRT
Definition: avf_showwaves.c:49
DRAW_SCALE
@ DRAW_SCALE
Definition: avf_showwaves.c:55
AV_OPT_TYPE_VIDEO_RATE
@ AV_OPT_TYPE_VIDEO_RATE
offset must point to AVRational
Definition: opt.h:236
DRAW_FULL
@ DRAW_FULL
Definition: avf_showwaves.c:56
MODE_NB
@ MODE_NB
Definition: avf_showwaves.c:43
SCALE_CBRT
@ SCALE_CBRT
Definition: avf_showwaves.c:50
DRAW_NB
@ DRAW_NB
Definition: avf_showwaves.c:57
FLAGS
#define FLAGS
Definition: avf_showwaves.c:95
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:233
MODE_POINT
@ MODE_POINT
Definition: avf_showwaves.c:39
MODE_CENTERED_LINE
@ MODE_CENTERED_LINE
Definition: avf_showwaves.c:42
SCALE_LIN
@ SCALE_LIN
Definition: avf_showwaves.c:47
MODE_P2P
@ MODE_P2P
Definition: avf_showwaves.c:41
w
FFmpeg Automated Testing Environment ************************************Introduction Using FATE from your FFmpeg source directory Submitting the results to the FFmpeg result aggregation server Uploading new samples to the fate suite FATE makefile targets and variables Makefile targets Makefile variables Examples Introduction **************FATE is an extended regression suite on the client side and a means for results aggregation and presentation on the server side The first part of this document explains how you can use FATE from your FFmpeg source directory to test your ffmpeg binary The second part describes how you can run FATE to submit the results to FFmpeg’s FATE server In any way you can have a look at the publicly viewable FATE results by visiting this as it can be seen if some test on some platform broke with their recent contribution This usually happens on the platforms the developers could not test on The second part of this document describes how you can run FATE to submit your results to FFmpeg’s FATE server If you want to submit your results be sure to check that your combination of OS and compiler is not already listed on the above mentioned website In the third part you can find a comprehensive listing of FATE makefile targets and variables Using FATE from your FFmpeg source directory **********************************************If you want to run FATE on your machine you need to have the samples in place You can get the samples via the build target fate rsync Use this command from the top level source this will cause FATE to fail NOTE To use a custom wrapper to run the pass ‘ target exec’ to ‘configure’ or set the TARGET_EXEC Make variable Submitting the results to the FFmpeg result aggregation server ****************************************************************To submit your results to the server you should run fate through the shell script ‘tests fate sh’ from the FFmpeg sources This script needs to be invoked with a configuration file as its first argument tests fate sh path to fate_config A configuration file template with comments describing the individual configuration variables can be found at ‘doc fate_config sh template’ Create a configuration that suits your based on the configuration template The ‘slot’ configuration variable can be any string that is not yet but it is suggested that you name it adhering to the following pattern ‘ARCH OS COMPILER COMPILER VERSION’ The configuration file itself will be sourced in a shell therefore all shell features may be used This enables you to setup the environment as you need it for your build For your first test runs the ‘fate_recv’ variable should be empty or commented out This will run everything as normal except that it will omit the submission of the results to the server The following files should be present in $workdir as specified in the configuration it may help to try out the ‘ssh’ command with one or more ‘ v’ options You should get detailed output concerning your SSH configuration and the authentication process The only thing left is to automate the execution of the fate sh script and the synchronisation of the samples directory Uploading new samples to the fate suite *****************************************If you need a sample uploaded send a mail to samples request This is for developers who have an account on the fate suite server If you upload new please make sure they are as small as space on each network bandwidth and so on benefit from smaller test cases Also keep in mind older checkouts use existing sample that means in practice generally do not remove or overwrite files as it likely would break older checkouts or releases Also all needed samples for a commit should be ideally before the push If you need an account for frequently uploading samples or you wish to help others by doing that send a mail to ffmpeg devel rsync vauL Duo ug o o w
Definition: fate.txt:150
SCALE_LOG
@ SCALE_LOG
Definition: avf_showwaves.c:48
mode
mode
Definition: ebur128.h:83
AV_OPT_TYPE_INT
@ AV_OPT_TYPE_INT
Definition: opt.h:223
MODE_LINE
@ MODE_LINE
Definition: avf_showwaves.c:40
OFFSET
#define OFFSET(x)
Definition: avf_showwaves.c:94
AV_OPT_TYPE_BOOL
@ AV_OPT_TYPE_BOOL
Definition: opt.h:240
AV_OPT_TYPE_STRING
@ AV_OPT_TYPE_STRING
Definition: opt.h:227
AV_OPT_TYPE_CONST
@ AV_OPT_TYPE_CONST
Definition: opt.h:232
SCALE_NB
@ SCALE_NB
Definition: avf_showwaves.c:51