aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2019-04-17 10:31:57 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2019-04-17 10:31:57 +0000
commitf81e13160e0fc86329f28d1981c5c7ee61cfa7c5 (patch)
treee34dc89c720b15936bb9721cdbf1c12fc51ffa56
parent1e1f4aff7f0f9f1ada9a1111ceadba29ce4d2d41 (diff)
downloadqmmp-f81e13160e0fc86329f28d1981c5c7ee61cfa7c5.tar.gz
qmmp-f81e13160e0fc86329f28d1981c5c7ee61cfa7c5.tar.bz2
qmmp-f81e13160e0fc86329f28d1981c5c7ee61cfa7c5.zip
feature to disable two passes for equalizer
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@8781 90c681e8-e032-0410-971d-27865f9a5e38
-rw-r--r--src/qmmp/eqsettings.cpp18
-rw-r--r--src/qmmp/eqsettings.h9
-rw-r--r--src/qmmp/outputwriter.cpp1
-rw-r--r--src/qmmp/qmmpsettings.cpp8
-rw-r--r--src/qmmp/qmmpsettings.h4
-rw-r--r--src/qmmpui/configdialog.cpp5
-rw-r--r--src/qmmpui/forms/configdialog.ui59
7 files changed, 65 insertions, 39 deletions
diff --git a/src/qmmp/eqsettings.cpp b/src/qmmp/eqsettings.cpp
index 0f1ef99b9..e32361caf 100644
--- a/src/qmmp/eqsettings.cpp
+++ b/src/qmmp/eqsettings.cpp
@@ -26,17 +26,14 @@ EqSettings::EqSettings(const EqSettings &other)
m_preamp = other.m_preamp;
m_is_enabled = other.m_is_enabled;
m_bands = other.m_bands;
+ m_two_passes = other.m_two_passes;
for(int i = 0; i < 31; ++i)
m_gains[i] = other.m_gains[i];
}
EqSettings::EqSettings(Bands bands)
{
- for(int i = 0; i < 31; ++i)
- m_gains[i] = 0;
m_bands = bands;
- m_preamp = 0;
- m_is_enabled = false;
}
bool EqSettings::isEnabled() const
@@ -59,6 +56,11 @@ int EqSettings::bands() const
return static_cast<int>(m_bands);
}
+bool EqSettings::twoPasses() const
+{
+ return m_two_passes;
+}
+
void EqSettings::setEnabled(bool enabled)
{
m_is_enabled = enabled;
@@ -74,6 +76,11 @@ void EqSettings::setPreamp(double preamp)
m_preamp = preamp;
}
+void EqSettings::setTwoPasses(bool enabled)
+{
+ m_two_passes = enabled;
+}
+
EqSettings &EqSettings::operator=(const EqSettings &s)
{
for(int i = 0; i < m_bands; ++i)
@@ -81,6 +88,7 @@ EqSettings &EqSettings::operator=(const EqSettings &s)
m_preamp = s.m_preamp;
m_is_enabled = s.m_is_enabled;
m_bands = s.m_bands;
+ m_two_passes = s.m_two_passes;
return *this;
}
@@ -91,7 +99,7 @@ bool EqSettings::operator==(const EqSettings &s) const
if(m_gains[i] != s.m_gains[i])
return false;
}
- return (m_preamp == s.m_preamp) && (m_is_enabled == s.m_is_enabled) && (m_bands == s.m_bands);
+ return (m_preamp == s.m_preamp) && (m_is_enabled == s.m_is_enabled) && (m_bands == s.m_bands) && (m_two_passes == s.m_two_passes);
}
bool EqSettings::operator!=(const EqSettings &s) const
diff --git a/src/qmmp/eqsettings.h b/src/qmmp/eqsettings.h
index dc770210a..5fec23d8e 100644
--- a/src/qmmp/eqsettings.h
+++ b/src/qmmp/eqsettings.h
@@ -64,6 +64,7 @@ public:
* Returns number of bands
*/
int bands() const;
+ bool twoPasses() const;
/*!
* Enables equalizer if \p enabled is \b true or disables it if \p enabled is \b false.
*/
@@ -78,6 +79,7 @@ public:
* Sets equalizer preamp to \b preamp.
*/
void setPreamp(double preamp);
+ void setTwoPasses(bool enabled = true);
/*!
* Assigns equalizer settings \b s to this settings.
*/
@@ -92,10 +94,11 @@ public:
bool operator!=(const EqSettings &s) const;
private:
- double m_gains[31];
- double m_preamp;
- bool m_is_enabled;
+ double m_gains[31] = { 0 };
+ double m_preamp = 0;
+ bool m_is_enabled = false;
int m_bands;
+ bool m_two_passes = false;
};
#endif // EQSETTINGS_H
diff --git a/src/qmmp/outputwriter.cpp b/src/qmmp/outputwriter.cpp
index 63abd7980..25889796d 100644
--- a/src/qmmp/outputwriter.cpp
+++ b/src/qmmp/outputwriter.cpp
@@ -382,6 +382,7 @@ void OutputWriter::updateEqSettings()
int bands = m_settings->eqSettings().bands();
init_iir(m_frequency, bands);
+ set_two_passes(m_settings->eqSettings().twoPasses());
set_preamp(0, 1.0 + 0.0932471 *preamp + 0.00279033 * preamp * preamp);
set_preamp(1, 1.0 + 0.0932471 *preamp + 0.00279033 * preamp * preamp);
diff --git a/src/qmmp/qmmpsettings.cpp b/src/qmmp/qmmpsettings.cpp
index de9e3d2d6..158c4d9ad 100644
--- a/src/qmmp/qmmpsettings.cpp
+++ b/src/qmmp/qmmpsettings.cpp
@@ -163,9 +163,9 @@ bool QmmpSettings::useProxyAuth() const
return m_proxy_auth;
}
-QUrl QmmpSettings::proxy() const
+const QUrl &QmmpSettings::proxy() const
{
- return m_proxy_url;
+ return m_proxy_url;
}
void QmmpSettings::setNetworkSettings(bool use_proxy, bool auth, const QUrl &proxy)
@@ -177,7 +177,7 @@ void QmmpSettings::setNetworkSettings(bool use_proxy, bool auth, const QUrl &pro
emit networkSettingsChanged();
}
-EqSettings QmmpSettings::eqSettings() const
+const EqSettings &QmmpSettings::eqSettings() const
{
return m_eq_settings;
}
@@ -199,6 +199,7 @@ void QmmpSettings::readEqSettings(EqSettings::Bands bands)
m_eq_settings.setPreamp(settings.value("preamp", 0).toDouble());
m_eq_settings.setEnabled(settings.value("enabled", false).toBool());
settings.endGroup();
+ m_eq_settings.setTwoPasses(settings.value("Equalizer/two_passes", true).toBool());
emit eqSettingsChanged();
}
@@ -256,6 +257,7 @@ void QmmpSettings::sync()
settings.setValue("preamp", m_eq_settings.preamp());
settings.setValue("enabled", m_eq_settings.isEnabled());
settings.endGroup();
+ settings.setValue("Equalizer/two_passes", m_eq_settings.twoPasses());
//buffer size
settings.setValue("Output/buffer_size", m_buffer_size);
//file type determination
diff --git a/src/qmmp/qmmpsettings.h b/src/qmmp/qmmpsettings.h
index efbf64d91..1588c382c 100644
--- a/src/qmmp/qmmpsettings.h
+++ b/src/qmmp/qmmpsettings.h
@@ -132,7 +132,7 @@ public:
/*!
* Returns global proxy url.
*/
- QUrl proxy() const;
+ const QUrl &proxy() const;
/*!
* Sets network settings.
* @param use_proxy Enables or disables global proxy.
@@ -143,7 +143,7 @@ public:
/*!
* Returns equalizer settings.
*/
- EqSettings eqSettings() const;
+ const EqSettings &eqSettings() const;
/*!
* Changes equalizer settings to \b settings.
*/
diff --git a/src/qmmpui/configdialog.cpp b/src/qmmpui/configdialog.cpp
index c6a7e9073..5c80bec2f 100644
--- a/src/qmmpui/configdialog.cpp
+++ b/src/qmmpui/configdialog.cpp
@@ -155,6 +155,8 @@ void ConfigDialog::readSettings()
m_ui->bitDepthComboBox->setCurrentIndex(m_ui->bitDepthComboBox->findData(gs->outputFormat()));
m_ui->ditheringCheckBox->setChecked(gs->useDithering());
m_ui->bufferSizeSpinBox->setValue(gs->bufferSize());
+ //equalizer
+ m_ui->twoPassEqCheckBox->setChecked(gs->eqSettings().twoPasses());
//geometry
QSettings settings (Qmmp::configFile(), QSettings::IniFormat);
resize(settings.value("ConfigDialog/window_size", QSize(700,470)).toSize());
@@ -418,6 +420,9 @@ void ConfigDialog::saveSettings()
gs->setBufferSize(m_ui->bufferSizeSpinBox->value());
gs->setDetermineFileTypeByContent(m_ui->byContentCheckBox->isChecked());
gs->setVolumeStep(m_ui->volumeStepSpinBox->value());
+ EqSettings eqs = gs->eqSettings();
+ eqs.setTwoPasses(m_ui->twoPassEqCheckBox->isChecked());
+ gs->setEqSettings(eqs);
QList<QVariant> var_sizes;
var_sizes << m_ui->splitter->sizes().first() << m_ui->splitter->sizes().last();
QSettings settings (Qmmp::configFile(), QSettings::IniFormat);
diff --git a/src/qmmpui/forms/configdialog.ui b/src/qmmpui/forms/configdialog.ui
index 40d49f705..559f0c573 100644
--- a/src/qmmpui/forms/configdialog.ui
+++ b/src/qmmpui/forms/configdialog.ui
@@ -768,10 +768,10 @@
<string>Audio</string>
</property>
<layout class="QGridLayout" name="gridLayout3">
- <item row="2" column="0">
- <widget class="QLabel" name="label_4">
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_20">
<property name="text">
- <string>Output bit depth:</string>
+ <string>Buffer size:</string>
</property>
</widget>
</item>
@@ -782,13 +782,6 @@
</property>
</widget>
</item>
- <item row="1" column="0">
- <widget class="QLabel" name="label_20">
- <property name="text">
- <string>Buffer size:</string>
- </property>
- </widget>
- </item>
<item row="1" column="1">
<widget class="QSpinBox" name="bufferSizeSpinBox">
<property name="sizePolicy">
@@ -817,33 +810,27 @@
</property>
</widget>
</item>
- <item row="3" column="0" colspan="3">
- <widget class="QCheckBox" name="softVolumeCheckBox">
+ <item row="0" column="0">
+ <widget class="QLabel" name="label_9">
<property name="text">
- <string>Use software volume control</string>
+ <string>Volume adjustment step:</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QComboBox" name="bitDepthComboBox"/>
</item>
- <item row="0" column="0">
- <widget class="QLabel" name="label_9">
+ <item row="3" column="0" colspan="3">
+ <widget class="QCheckBox" name="softVolumeCheckBox">
<property name="text">
- <string>Volume adjustment step:</string>
+ <string>Use software volume control</string>
</property>
</widget>
</item>
- <item row="0" column="1">
- <widget class="QSpinBox" name="volumeStepSpinBox">
- <property name="suffix">
- <string notr="true">%</string>
- </property>
- <property name="minimum">
- <number>1</number>
- </property>
- <property name="maximum">
- <number>20</number>
+ <item row="2" column="0">
+ <widget class="QLabel" name="label_4">
+ <property name="text">
+ <string>Output bit depth:</string>
</property>
</widget>
</item>
@@ -860,6 +847,26 @@
</property>
</spacer>
</item>
+ <item row="0" column="1">
+ <widget class="QSpinBox" name="volumeStepSpinBox">
+ <property name="suffix">
+ <string notr="true">%</string>
+ </property>
+ <property name="minimum">
+ <number>1</number>
+ </property>
+ <property name="maximum">
+ <number>20</number>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="0" colspan="3">
+ <widget class="QCheckBox" name="twoPassEqCheckBox">
+ <property name="text">
+ <string>Use two passes for equalizer</string>
+ </property>
+ </widget>
+ </item>
</layout>
</widget>
</item>