From f81e13160e0fc86329f28d1981c5c7ee61cfa7c5 Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Wed, 17 Apr 2019 10:31:57 +0000 Subject: 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 --- src/qmmp/eqsettings.cpp | 18 ++++++++---- src/qmmp/eqsettings.h | 9 ++++-- src/qmmp/outputwriter.cpp | 1 + src/qmmp/qmmpsettings.cpp | 8 ++++-- src/qmmp/qmmpsettings.h | 4 +-- src/qmmpui/configdialog.cpp | 5 ++++ src/qmmpui/forms/configdialog.ui | 59 ++++++++++++++++++++++------------------ 7 files changed, 65 insertions(+), 39 deletions(-) (limited to 'src') 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(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 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 @@ Audio - - + + - Output bit depth: + Buffer size: @@ -782,13 +782,6 @@ - - - - Buffer size: - - - @@ -817,33 +810,27 @@ - - + + - Use software volume control + Volume adjustment step: - - + + - Volume adjustment step: + Use software volume control - - - - % - - - 1 - - - 20 + + + + Output bit depth: @@ -860,6 +847,26 @@ + + + + % + + + 1 + + + 20 + + + + + + + Use two passes for equalizer + + + -- cgit v1.2.3-13-gbd6f