aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/qmmp/eqsettings.cpp9
-rw-r--r--src/qmmp/eqsettings.h22
-rw-r--r--src/qmmp/equ/iir.c6
-rw-r--r--src/qmmp/equ/iir.h2
-rw-r--r--src/qmmp/equ/iir_fpu.c2
-rw-r--r--src/qmmp/qmmpsettings.cpp2
-rw-r--r--src/qmmp/qmmpsettings.h2
7 files changed, 24 insertions, 21 deletions
diff --git a/src/qmmp/eqsettings.cpp b/src/qmmp/eqsettings.cpp
index 6a68bff1c..0f1ef99b9 100644
--- a/src/qmmp/eqsettings.cpp
+++ b/src/qmmp/eqsettings.cpp
@@ -30,13 +30,8 @@ EqSettings::EqSettings(const EqSettings &other)
m_gains[i] = other.m_gains[i];
}
-EqSettings::EqSettings(int bands)
+EqSettings::EqSettings(Bands bands)
{
- if(bands != 10 && bands != 15 && bands != 25 && bands != 31)
- {
- qWarning("EqSettings: invalid number of bands (%d), using 10 bands as fallback", bands);
- bands = 10;
- }
for(int i = 0; i < 31; ++i)
m_gains[i] = 0;
m_bands = bands;
@@ -61,7 +56,7 @@ double EqSettings::preamp() const
int EqSettings::bands() const
{
- return m_bands;
+ return static_cast<int>(m_bands);
}
void EqSettings::setEnabled(bool enabled)
diff --git a/src/qmmp/eqsettings.h b/src/qmmp/eqsettings.h
index 1019828e9..dc770210a 100644
--- a/src/qmmp/eqsettings.h
+++ b/src/qmmp/eqsettings.h
@@ -30,6 +30,16 @@ class QMMP_EXPORT EqSettings
{
public:
/*!
+ * Equalizer band number
+ */
+ enum Bands
+ {
+ EQ_BANDS_10 = 10, /*!< 10 bands */
+ EQ_BANDS_15 = 15, /*!< 15 bands */
+ EQ_BANDS_25 = 25, /*!< 25 bands */
+ EQ_BANDS_31 = 31 /*!< 31 bands */
+ };
+ /*!
* Constructs a copy of \b other.
*/
EqSettings(const EqSettings &other);
@@ -37,7 +47,7 @@ public:
* Constructs an empty equalizer settings (0 dB, disabled)
* @param bands - Number of bands (supported: 10, 15, 25, 31)
*/
- EqSettings(int bands = EQ_BANDS_10);
+ EqSettings(Bands bands = EQ_BANDS_10);
/*!
* Returns \b true if equalizer os enabled, otherwise returns \b false.
*/
@@ -80,16 +90,6 @@ public:
* Returns \b true if equalizer settins \b s is not equal to this settings; otherwise returns false.
*/
bool operator!=(const EqSettings &s) const;
- /*!
- * Equalizer bands number
- */
- enum BANDS
- {
- EQ_BANDS_10 = 10, /*!< 10 bands */
- EQ_BANDS_15 = 15, /*!< 15 bands */
- EQ_BANDS_25 = 25, /*!< 25 bands */
- EQ_BANDS_31 = 31 /*!< 31 bands */
- };
private:
double m_gains[31];
diff --git a/src/qmmp/equ/iir.c b/src/qmmp/equ/iir.c
index 0dccc11e7..97abdf0f0 100644
--- a/src/qmmp/equ/iir.c
+++ b/src/qmmp/equ/iir.c
@@ -51,12 +51,18 @@ unsigned int blength = 0;
*/
unsigned int rate = 0;
int band_count = 0;
+int two_passes = 0;
void set_preamp(int chn, float val)
{
preamp[chn] = val;
}
+void set_two_passes(int enabled)
+{
+ two_passes = enabled;
+}
+
/* Init the filters */
void init_iir(unsigned int srate, int band_num)
{
diff --git a/src/qmmp/equ/iir.h b/src/qmmp/equ/iir.h
index ad241e8d8..1a1d9207e 100644
--- a/src/qmmp/equ/iir.h
+++ b/src/qmmp/equ/iir.h
@@ -64,6 +64,7 @@ void init_iir(unsigned int srate, int band_num);
void clean_history();
void set_gain(int index, int chn, float val);
void set_preamp(int chn, float val);
+void set_two_passes(int enabled);
int iir(float * d, int samples, int nch);
@@ -81,6 +82,7 @@ __inline__ int round_ppc(float x);
extern float preamp[EQ_CHANNELS];
extern sIIRCoefficients *iir_cf;
extern int band_count;
+extern int two_passes;
#ifdef BENCHMARK
extern double timex;
diff --git a/src/qmmp/equ/iir_fpu.c b/src/qmmp/equ/iir_fpu.c
index fdef54352..3efac6403 100644
--- a/src/qmmp/equ/iir_fpu.c
+++ b/src/qmmp/equ/iir_fpu.c
@@ -136,7 +136,7 @@ __inline__ int iir(float *d, int samples, int nch)
out[channel] += data_history[channel][band].y[i]*gain[channel][band]; // * 2.0;
} /* For each band */
- //if (eqcfg.extra_filtering)
+ if (two_passes)
{
/* Filter the sample again */
for (band = 0; band < band_count; band++)
diff --git a/src/qmmp/qmmpsettings.cpp b/src/qmmp/qmmpsettings.cpp
index 720d153a4..de9e3d2d6 100644
--- a/src/qmmp/qmmpsettings.cpp
+++ b/src/qmmp/qmmpsettings.cpp
@@ -189,7 +189,7 @@ void QmmpSettings::setEqSettings(const EqSettings &settings)
emit eqSettingsChanged();
}
-void QmmpSettings::readEqSettings(int bands)
+void QmmpSettings::readEqSettings(EqSettings::Bands bands)
{
m_eq_settings = EqSettings(bands);
QSettings settings (Qmmp::configFile(), QSettings::IniFormat);
diff --git a/src/qmmp/qmmpsettings.h b/src/qmmp/qmmpsettings.h
index de9a4a985..efbf64d91 100644
--- a/src/qmmp/qmmpsettings.h
+++ b/src/qmmp/qmmpsettings.h
@@ -152,7 +152,7 @@ public:
* Reads equalizer settings. Call this function before equalizer usage.
* @param bands Number of bands.
*/
- void readEqSettings(int bands = EqSettings::EQ_BANDS_10);
+ void readEqSettings(EqSettings::Bands bands = EqSettings::EQ_BANDS_10);
/*!
* Returns buffer size in milliseconds.
*/