avfilter/avf_showspectrum: reduce number of operations
Signed-off-by: Paul B Mahol <onemda@gmail.com>
This commit is contained in:
parent
2009d922db
commit
57df71eaf7
@ -451,13 +451,15 @@ static void run_fft(ShowSpectrumContext *s, AVFrame *fin)
|
|||||||
|
|
||||||
static void calc_magnitudes(ShowSpectrumContext *s)
|
static void calc_magnitudes(ShowSpectrumContext *s)
|
||||||
{
|
{
|
||||||
|
const double w = s->win_scale * (s->scale == LOG ? s->win_scale : 1);
|
||||||
int ch, y, h = s->orientation == VERTICAL ? s->h : s->w;
|
int ch, y, h = s->orientation == VERTICAL ? s->h : s->w;
|
||||||
|
const float f = s->gain * w;
|
||||||
|
|
||||||
for (ch = 0; ch < s->nb_display_channels; ch++) {
|
for (ch = 0; ch < s->nb_display_channels; ch++) {
|
||||||
float *magnitudes = s->magnitudes[ch];
|
float *magnitudes = s->magnitudes[ch];
|
||||||
|
|
||||||
for (y = 0; y < h; y++)
|
for (y = 0; y < h; y++)
|
||||||
magnitudes[y] = MAGNITUDE(y, ch);
|
magnitudes[y] = MAGNITUDE(y, ch) * f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -475,13 +477,15 @@ static void calc_phases(ShowSpectrumContext *s)
|
|||||||
|
|
||||||
static void acalc_magnitudes(ShowSpectrumContext *s)
|
static void acalc_magnitudes(ShowSpectrumContext *s)
|
||||||
{
|
{
|
||||||
|
const double w = s->win_scale * (s->scale == LOG ? s->win_scale : 1);
|
||||||
int ch, y, h = s->orientation == VERTICAL ? s->h : s->w;
|
int ch, y, h = s->orientation == VERTICAL ? s->h : s->w;
|
||||||
|
const float f = s->gain * w;
|
||||||
|
|
||||||
for (ch = 0; ch < s->nb_display_channels; ch++) {
|
for (ch = 0; ch < s->nb_display_channels; ch++) {
|
||||||
float *magnitudes = s->magnitudes[ch];
|
float *magnitudes = s->magnitudes[ch];
|
||||||
|
|
||||||
for (y = 0; y < h; y++)
|
for (y = 0; y < h; y++)
|
||||||
magnitudes[y] += MAGNITUDE(y, ch);
|
magnitudes[y] += MAGNITUDE(y, ch) * f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -611,8 +615,6 @@ static int plot_spectrum_column(AVFilterLink *inlink, AVFrame *insamples)
|
|||||||
AVFilterLink *outlink = ctx->outputs[0];
|
AVFilterLink *outlink = ctx->outputs[0];
|
||||||
ShowSpectrumContext *s = ctx->priv;
|
ShowSpectrumContext *s = ctx->priv;
|
||||||
AVFrame *outpicref = s->outpicref;
|
AVFrame *outpicref = s->outpicref;
|
||||||
const double w = s->data == D_PHASE ? 1 : s->win_scale;
|
|
||||||
const float g = s->gain;
|
|
||||||
int h = s->orientation == VERTICAL ? s->channel_height : s->channel_width;
|
int h = s->orientation == VERTICAL ? s->channel_height : s->channel_width;
|
||||||
|
|
||||||
int ch, plane, x, y;
|
int ch, plane, x, y;
|
||||||
@ -638,7 +640,7 @@ static int plot_spectrum_column(AVFilterLink *inlink, AVFrame *insamples)
|
|||||||
switch (s->data) {
|
switch (s->data) {
|
||||||
case D_MAGNITUDE:
|
case D_MAGNITUDE:
|
||||||
/* get magnitude */
|
/* get magnitude */
|
||||||
a = g * w * magnitudes[y];
|
a = magnitudes[y];
|
||||||
break;
|
break;
|
||||||
case D_PHASE:
|
case D_PHASE:
|
||||||
/* get phase */
|
/* get phase */
|
||||||
@ -666,7 +668,7 @@ static int plot_spectrum_column(AVFilterLink *inlink, AVFrame *insamples)
|
|||||||
a = av_clipf(pow(a, 0.20), 0, 1);
|
a = av_clipf(pow(a, 0.20), 0, 1);
|
||||||
break;
|
break;
|
||||||
case LOG:
|
case LOG:
|
||||||
a = 1 + log10(av_clipd(a * w, 1e-6, 1)) / 6; // zero = -120dBFS
|
a = 1 + log10(av_clipd(a, 1e-6, 1)) / 6; // zero = -120dBFS
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
av_assert0(0);
|
av_assert0(0);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user