avformat/mxfdec: Check edit unit for overflow in mxf_set_current_edit_unit()
[FFMpeg-mirror.git] / libavfilter / avf_showcqt.h
blob186215c1e2cc36f37fe8b4736c2b2bd1b99f3a49
1 /*
2 * Copyright (c) 2015 Muhammad Faiz <mfcc64@gmail.com>
4 * This file is part of FFmpeg.
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.
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.
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
21 #ifndef AVFILTER_SHOWCQT_H
22 #define AVFILTER_SHOWCQT_H
24 #include "libavutil/tx.h"
25 #include "avfilter.h"
27 typedef struct Coeffs {
28 float *val;
29 int start, len;
30 } Coeffs;
32 typedef struct RGBFloat {
33 float r, g, b;
34 } RGBFloat;
36 typedef struct YUVFloat {
37 float y, u, v;
38 } YUVFloat;
40 typedef union {
41 RGBFloat rgb;
42 YUVFloat yuv;
43 } ColorFloat;
45 typedef struct ShowCQTContext {
46 const AVClass *class;
47 AVFilterContext *ctx;
48 AVFrame *axis_frame;
49 AVFrame *sono_frame;
50 enum AVPixelFormat format;
51 int sono_idx;
52 int sono_count;
53 int step;
54 AVRational step_frac;
55 int remaining_frac;
56 int remaining_fill;
57 int remaining_fill_max;
58 int64_t next_pts;
59 double *freq;
60 AVTXContext *fft_ctx;
61 av_tx_fn tx_fn;
62 Coeffs *coeffs;
63 AVComplexFloat *fft_data;
64 AVComplexFloat *fft_input;
65 AVComplexFloat *fft_result;
66 AVComplexFloat *cqt_result;
67 float *attack_data;
68 int fft_bits;
69 int fft_len;
70 int cqt_len;
71 int cqt_align;
72 ColorFloat *c_buf;
73 float *h_buf;
74 float *rcp_h_buf;
75 float *sono_v_buf;
76 float *bar_v_buf;
77 float cmatrix[3][3];
78 float cscheme_v[6];
79 /* callback */
80 void (*cqt_calc)(AVComplexFloat *dst, const AVComplexFloat *src, const Coeffs *coeffs,
81 int len, int fft_len);
82 void (*permute_coeffs)(float *v, int len);
83 void (*draw_bar)(AVFrame *out, const float *h, const float *rcp_h,
84 const ColorFloat *c, int bar_h, float bar_t);
85 void (*draw_axis)(AVFrame *out, AVFrame *axis, const ColorFloat *c, int off);
86 void (*draw_sono)(AVFrame *out, AVFrame *sono, int off, int idx);
87 void (*update_sono)(AVFrame *sono, const ColorFloat *c, int idx);
88 /* performance debugging */
89 int64_t fft_time;
90 int64_t cqt_time;
91 int64_t process_cqt_time;
92 int64_t update_sono_time;
93 int64_t alloc_time;
94 int64_t bar_time;
95 int64_t axis_time;
96 int64_t sono_time;
97 /* option */
98 int width, height;
99 AVRational rate;
100 int bar_h;
101 int axis_h;
102 int sono_h;
103 int fullhd; /* deprecated */
104 char *sono_v;
105 char *bar_v;
106 float sono_g;
107 float bar_g;
108 float bar_t;
109 double timeclamp;
110 double attack;
111 double basefreq;
112 double endfreq;
113 float coeffclamp; /* deprecated - ignored */
114 char *tlength;
115 int count;
116 int fcount;
117 char *fontfile;
118 char *font;
119 char *fontcolor;
120 char *axisfile;
121 int axis;
122 int csp;
123 char *cscheme;
124 } ShowCQTContext;
126 void ff_showcqt_init_x86(ShowCQTContext *s);
128 #endif