FFmpeg
avf_showcqt.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2015 Muhammad Faiz <mfcc64@gmail.com>
3  *
4  * This file is part of FFmpeg.
5  *
6  * FFmpeg is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * FFmpeg is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with FFmpeg; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19  */
20 
21 #ifndef AVFILTER_SHOWCQT_H
22 #define AVFILTER_SHOWCQT_H
23 
24 #include "libavcodec/avfft.h"
25 #include "avfilter.h"
26 #include "internal.h"
27 
28 typedef struct Coeffs {
30  int start, len;
31 } Coeffs;
32 
33 typedef struct RGBFloat {
34  float r, g, b;
35 } RGBFloat;
36 
37 typedef struct YUVFloat {
38  float y, u, v;
39 } YUVFloat;
40 
41 typedef union {
44 } ColorFloat;
45 
46 typedef struct ShowCQTContext {
47  const AVClass *class;
52  int sono_idx;
54  int step;
59  int64_t next_pts;
60  double *freq;
66  float *attack_data;
67  int fft_bits;
68  int fft_len;
69  int cqt_len;
70  int cqt_align;
72  float *h_buf;
73  float *rcp_h_buf;
74  float *sono_v_buf;
75  float *bar_v_buf;
76  float cmatrix[3][3];
77  float cscheme_v[6];
78  /* callback */
79  void (*cqt_calc)(FFTComplex *dst, const FFTComplex *src, const Coeffs *coeffs,
80  int len, int fft_len);
81  void (*permute_coeffs)(float *v, int len);
82  void (*draw_bar)(AVFrame *out, const float *h, const float *rcp_h,
83  const ColorFloat *c, int bar_h, float bar_t);
84  void (*draw_axis)(AVFrame *out, AVFrame *axis, const ColorFloat *c, int off);
85  void (*draw_sono)(AVFrame *out, AVFrame *sono, int off, int idx);
86  void (*update_sono)(AVFrame *sono, const ColorFloat *c, int idx);
87  /* performance debugging */
88  int64_t fft_time;
89  int64_t cqt_time;
92  int64_t alloc_time;
93  int64_t bar_time;
94  int64_t axis_time;
95  int64_t sono_time;
96  /* option */
97  int width, height;
99  int bar_h;
100  int axis_h;
101  int sono_h;
102  int fullhd; /* deprecated */
103  char *sono_v;
104  char *bar_v;
105  float sono_g;
106  float bar_g;
107  float bar_t;
108  double timeclamp;
109  double attack;
110  double basefreq;
111  double endfreq;
112  float coeffclamp; /* deprecated - ignored */
113  char *tlength;
114  int count;
115  int fcount;
116  char *fontfile;
117  char *font;
118  char *fontcolor;
119  char *axisfile;
120  int axis;
121  int csp;
122  char *cscheme;
124 
126 
127 #endif
ShowCQTContext::coeffs
Coeffs * coeffs
Definition: avf_showcqt.h:62
ShowCQTContext::next_pts
int64_t next_pts
Definition: avf_showcqt.h:59
ShowCQTContext::bar_g
float bar_g
Definition: avf_showcqt.h:106
AVPixelFormat
AVPixelFormat
Pixel format.
Definition: pixfmt.h:64
ShowCQTContext::cqt_result
FFTComplex * cqt_result
Definition: avf_showcqt.h:65
YUVFloat::v
float v
Definition: avf_showcqt.h:38
ShowCQTContext::fullhd
int fullhd
Definition: avf_showcqt.h:102
ShowCQTContext::bar_v_buf
float * bar_v_buf
Definition: avf_showcqt.h:75
out
FILE * out
Definition: movenc.c:54
ColorFloat
Definition: avf_showcqt.h:41
ShowCQTContext::cqt_align
int cqt_align
Definition: avf_showcqt.h:70
AVFrame
This structure describes decoded (raw) audio or video data.
Definition: frame.h:303
ShowCQTContext::step
int step
Definition: avf_showcqt.h:54
ShowCQTContext::fft_result
FFTComplex * fft_result
Definition: avf_showcqt.h:64
ShowCQTContext::fft_len
int fft_len
Definition: avf_showcqt.h:68
ShowCQTContext::step_frac
AVRational step_frac
Definition: avf_showcqt.h:55
ShowCQTContext::sono_g
float sono_g
Definition: avf_showcqt.h:105
ShowCQTContext::width
int width
Definition: avf_showcqt.h:97
ShowCQTContext::fcount
int fcount
Definition: avf_showcqt.h:115
ShowCQTContext::axisfile
char * axisfile
Definition: avf_showcqt.h:119
ShowCQTContext::update_sono
void(* update_sono)(AVFrame *sono, const ColorFloat *c, int idx)
Definition: avf_showcqt.h:86
ShowCQTContext::basefreq
double basefreq
Definition: avf_showcqt.h:110
ShowCQTContext::attack
double attack
Definition: avf_showcqt.h:109
ShowCQTContext::remaining_fill
int remaining_fill
Definition: avf_showcqt.h:57
ShowCQTContext::fft_ctx
FFTContext * fft_ctx
Definition: avf_showcqt.h:61
ShowCQTContext::cmatrix
float cmatrix[3][3]
Definition: avf_showcqt.h:76
ShowCQTContext::fft_time
int64_t fft_time
Definition: avf_showcqt.h:88
ShowCQTContext::sono_idx
int sono_idx
Definition: avf_showcqt.h:52
ShowCQTContext::sono_count
int sono_count
Definition: avf_showcqt.h:53
ShowCQTContext::bar_time
int64_t bar_time
Definition: avf_showcqt.h:93
ShowCQTContext::rcp_h_buf
float * rcp_h_buf
Definition: avf_showcqt.h:73
ShowCQTContext::sono_v
char * sono_v
Definition: avf_showcqt.h:103
s
#define s(width, name)
Definition: cbs_vp9.c:257
RGBFloat::g
float g
Definition: avf_showcqt.h:34
RGBFloat::b
float b
Definition: avf_showcqt.h:34
ShowCQTContext::remaining_frac
int remaining_frac
Definition: avf_showcqt.h:56
ShowCQTContext::axis_frame
AVFrame * axis_frame
Definition: avf_showcqt.h:49
ShowCQTContext
Definition: avf_showcqt.h:46
ShowCQTContext::axis_h
int axis_h
Definition: avf_showcqt.h:100
ShowCQTContext::rate
AVRational rate
Definition: avf_showcqt.h:98
ShowCQTContext::fontfile
char * fontfile
Definition: avf_showcqt.h:116
AVClass
Describe the class of an AVClass context structure.
Definition: log.h:67
ShowCQTContext::remaining_fill_max
int remaining_fill_max
Definition: avf_showcqt.h:58
ShowCQTContext::coeffclamp
float coeffclamp
Definition: avf_showcqt.h:112
ShowCQTContext::draw_axis
void(* draw_axis)(AVFrame *out, AVFrame *axis, const ColorFloat *c, int off)
Definition: avf_showcqt.h:84
ShowCQTContext::axis_time
int64_t axis_time
Definition: avf_showcqt.h:94
AVRational
Rational number (pair of numerator and denominator).
Definition: rational.h:58
src
#define src
Definition: vp8dsp.c:255
ShowCQTContext::draw_bar
void(* draw_bar)(AVFrame *out, const float *h, const float *rcp_h, const ColorFloat *c, int bar_h, float bar_t)
Definition: avf_showcqt.h:82
ShowCQTContext::tlength
char * tlength
Definition: avf_showcqt.h:113
FFTSample
float FFTSample
Definition: avfft.h:35
avfft.h
c
Undefined Behavior In the C some operations are like signed integer dereferencing freed accessing outside allocated Undefined Behavior must not occur in a C it is not safe even if the output of undefined operations is unused The unsafety may seem nit picking but Optimizing compilers have in fact optimized code on the assumption that no undefined Behavior occurs Optimizing code based on wrong assumptions can and has in some cases lead to effects beyond the output of computations The signed integer overflow problem in speed critical code Code which is highly optimized and works with signed integers sometimes has the problem that often the output of the computation does not c
Definition: undefined.txt:32
ShowCQTContext::font
char * font
Definition: avf_showcqt.h:117
YUVFloat::y
float y
Definition: avf_showcqt.h:38
ShowCQTContext::fft_bits
int fft_bits
Definition: avf_showcqt.h:67
ShowCQTContext::cqt_calc
void(* cqt_calc)(FFTComplex *dst, const FFTComplex *src, const Coeffs *coeffs, int len, int fft_len)
Definition: avf_showcqt.h:79
RGBFloat
Definition: avf_showcqt.h:33
ShowCQTContext::count
int count
Definition: avf_showcqt.h:114
ShowCQTContext::axis
int axis
Definition: avf_showcqt.h:120
ShowCQTContext::permute_coeffs
void(* permute_coeffs)(float *v, int len)
Definition: avf_showcqt.h:81
ShowCQTContext::attack_data
float * attack_data
Definition: avf_showcqt.h:66
ShowCQTContext::fontcolor
char * fontcolor
Definition: avf_showcqt.h:118
ShowCQTContext::h_buf
float * h_buf
Definition: avf_showcqt.h:72
ColorFloat::rgb
RGBFloat rgb
Definition: avf_showcqt.h:42
ShowCQTContext::ctx
AVFilterContext * ctx
Definition: avf_showcqt.h:48
ShowCQTContext::timeclamp
double timeclamp
Definition: avf_showcqt.h:108
internal.h
ShowCQTContext::process_cqt_time
int64_t process_cqt_time
Definition: avf_showcqt.h:90
Coeffs::len
int len
Definition: avf_showcqt.h:30
ShowCQTContext::endfreq
double endfreq
Definition: avf_showcqt.h:111
FFTContext
Definition: fft.h:83
ShowCQTContext::sono_time
int64_t sono_time
Definition: avf_showcqt.h:95
len
int len
Definition: vorbis_enc_data.h:426
ShowCQTContext::sono_frame
AVFrame * sono_frame
Definition: avf_showcqt.h:50
RGBFloat::r
float r
Definition: avf_showcqt.h:34
Coeffs::start
int start
Definition: avf_showcqt.h:30
Coeffs
Definition: avf_showcqt.h:28
ShowCQTContext::bar_h
int bar_h
Definition: avf_showcqt.h:99
ShowCQTContext::csp
int csp
Definition: avf_showcqt.h:121
avfilter.h
ShowCQTContext::freq
double * freq
Definition: avf_showcqt.h:60
Coeffs::val
FFTSample * val
Definition: avf_showcqt.h:29
ShowCQTContext::cqt_len
int cqt_len
Definition: avf_showcqt.h:69
ff_showcqt_init_x86
void ff_showcqt_init_x86(ShowCQTContext *s)
Definition: avf_showcqt_init.c:47
AVFilterContext
An instance of a filter.
Definition: avfilter.h:333
ShowCQTContext::draw_sono
void(* draw_sono)(AVFrame *out, AVFrame *sono, int off, int idx)
Definition: avf_showcqt.h:85
ShowCQTContext::sono_v_buf
float * sono_v_buf
Definition: avf_showcqt.h:74
ShowCQTContext::height
int height
Definition: avf_showcqt.h:97
ShowCQTContext::sono_h
int sono_h
Definition: avf_showcqt.h:101
ShowCQTContext::fft_data
FFTComplex * fft_data
Definition: avf_showcqt.h:63
ShowCQTContext::bar_v
char * bar_v
Definition: avf_showcqt.h:104
h
h
Definition: vp9dsp_template.c:2038
ShowCQTContext::cscheme
char * cscheme
Definition: avf_showcqt.h:122
ColorFloat::yuv
YUVFloat yuv
Definition: avf_showcqt.h:43
ShowCQTContext::format
enum AVPixelFormat format
Definition: avf_showcqt.h:51
ShowCQTContext::c_buf
ColorFloat * c_buf
Definition: avf_showcqt.h:71
ShowCQTContext::cscheme_v
float cscheme_v[6]
Definition: avf_showcqt.h:77
YUVFloat
Definition: avf_showcqt.h:37
ShowCQTContext::alloc_time
int64_t alloc_time
Definition: avf_showcqt.h:92
YUVFloat::u
float u
Definition: avf_showcqt.h:38
FFTComplex
Definition: avfft.h:37
ShowCQTContext::bar_t
float bar_t
Definition: avf_showcqt.h:107
ShowCQTContext::update_sono_time
int64_t update_sono_time
Definition: avf_showcqt.h:91
ShowCQTContext::cqt_time
int64_t cqt_time
Definition: avf_showcqt.h:89