aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2018-08-08 22:01:37 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2018-08-08 22:01:37 +0000
commit1d05309bb7376484d66d126625b06a45c20ca7c4 (patch)
tree16f40f98c173bea6d3965df21a9f54837d395148 /src
parentac0725c0861a83fdce6e7caaa9d65976245d9f34 (diff)
downloadqmmp-1d05309bb7376484d66d126625b06a45c20ca7c4.tar.gz
qmmp-1d05309bb7376484d66d126625b06a45c20ca7c4.tar.bz2
qmmp-1d05309bb7376484d66d126625b06a45c20ca7c4.zip
added equalizer optimization
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@8255 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src')
-rw-r--r--src/qmmp/equ/iir_fpu.c38
1 files changed, 19 insertions, 19 deletions
diff --git a/src/qmmp/equ/iir_fpu.c b/src/qmmp/equ/iir_fpu.c
index e346fc8d7..6314364b4 100644
--- a/src/qmmp/equ/iir_fpu.c
+++ b/src/qmmp/equ/iir_fpu.c
@@ -33,16 +33,16 @@
#include "iir_fpu.h"
#include "iir.h"
-static sXYData data_history[EQ_MAX_BANDS][EQ_CHANNELS] __attribute__((aligned));
-static sXYData data_history2[EQ_MAX_BANDS][EQ_CHANNELS] __attribute__((aligned));
-float gain[EQ_MAX_BANDS][EQ_CHANNELS] __attribute__((aligned));
+static sXYData data_history[EQ_CHANNELS][EQ_MAX_BANDS] __attribute__((aligned));
+static sXYData data_history2[EQ_CHANNELS][EQ_MAX_BANDS] __attribute__((aligned));
+float gain[EQ_CHANNELS][EQ_MAX_BANDS] __attribute__((aligned));
/* random noise */
-sample_t dither[256];
+//sample_t dither[256];
//int di;
void set_gain(int index, int chn, float val)
{
- gain[index][chn] = val;
+ gain[chn][index] = val;
}
void clean_history()
@@ -113,27 +113,27 @@ __inline__ int iir(float *d, int samples, int nch)
for (band = 0; band < band_count; band++)
{
/* Optimization */
- if(gain[band][channel] > -1.0e-10 && gain[band][channel] < 1.0e-10)
+ if(gain[channel][band] > -1.0e-10 && gain[channel][band] < 1.0e-10)
continue;
/* Store Xi(n) */
- data_history[band][channel].x[i] = pcm[channel];
+ data_history[channel][band].x[i] = pcm[channel];
/* Calculate and store Yi(n) */
- data_history[band][channel].y[i] =
+ data_history[channel][band].y[i] =
(
/* = alpha * [x(n)-x(n-2)] */
iir_cf[band].alpha * ( data_history[band][channel].x[i]
- data_history[band][channel].x[k])
/* + gamma * y(n-1) */
- + iir_cf[band].gamma * data_history[band][channel].y[j]
+ + iir_cf[band].gamma * data_history[channel][band].y[j]
/* - beta * y(n-2) */
- - iir_cf[band].beta * data_history[band][channel].y[k]
+ - iir_cf[band].beta * data_history[channel][band].y[k]
);
/*
* The multiplication by 2.0 was 'moved' into the coefficients to save
* CPU cycles here */
/* Apply the gain */
- out[channel] += data_history[band][channel].y[i]*gain[band][channel]; // * 2.0;
+ out[channel] += data_history[channel][band].y[i]*gain[channel][band]; // * 2.0;
} /* For each band */
//if (eqcfg.extra_filtering)
@@ -142,24 +142,24 @@ __inline__ int iir(float *d, int samples, int nch)
for (band = 0; band < band_count; band++)
{
/* Optimization */
- if(gain[band][channel] > -1.0e-10 && gain[band][channel] < 1.0e-10)
+ if(gain[channel][band] > -1.0e-10 && gain[channel][band] < 1.0e-10)
continue;
/* Store Xi(n) */
- data_history2[band][channel].x[i] = out[channel];
+ data_history2[channel][band].x[i] = out[channel];
/* Calculate and store Yi(n) */
- data_history2[band][channel].y[i] =
+ data_history2[channel][band].y[i] =
(
/* y(n) = alpha * [x(n)-x(n-2)] */
- iir_cf[band].alpha * (data_history2[band][channel].x[i]
- - data_history2[band][channel].x[k])
+ iir_cf[band].alpha * (data_history2[channel][band].x[i]
+ - data_history2[channel][band].x[k])
/* + gamma * y(n-1) */
- + iir_cf[band].gamma * data_history2[band][channel].y[j]
+ + iir_cf[band].gamma * data_history2[channel][band].y[j]
/* - beta * y(n-2) */
- - iir_cf[band].beta * data_history2[band][channel].y[k]
+ - iir_cf[band].beta * data_history2[channel][band].y[k]
);
/* Apply the gain */
- out[channel] += data_history2[band][channel].y[i]*gain[band][channel];
+ out[channel] += data_history2[channel][band].y[i]*gain[channel][band];
} /* For each band */
}