From 3cef10d79faba3e84852de9d6382c503e50bd9b4 Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Wed, 8 Apr 2009 18:57:46 +0000 Subject: updated bs2b plugin, removed libbs2b-2.x support git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@895 90c681e8-e032-0410-971d-27865f9a5e38 --- src/plugins/Effect/bs2b/CMakeLists.txt | 5 + src/plugins/Effect/bs2b/bs2bplugin.cpp | 42 ++++--- src/plugins/Effect/bs2b/bs2bplugin.h | 5 + src/plugins/Effect/bs2b/settingsdialog.cpp | 57 ++++++++-- src/plugins/Effect/bs2b/settingsdialog.h | 9 ++ src/plugins/Effect/bs2b/settingsdialog.ui | 125 +++++++++++++++------ .../Effect/bs2b/translations/bs2b_plugin_cs.ts | 33 +++--- .../Effect/bs2b/translations/bs2b_plugin_de.ts | 41 +++---- .../Effect/bs2b/translations/bs2b_plugin_pl.ts | 49 ++++---- .../Effect/bs2b/translations/bs2b_plugin_ru.ts | 49 ++++---- .../Effect/bs2b/translations/bs2b_plugin_uk_UA.ts | 52 ++++----- .../Effect/bs2b/translations/bs2b_plugin_zh_CN.ts | 33 +++--- .../Effect/bs2b/translations/bs2b_plugin_zh_TW.ts | 33 +++--- 13 files changed, 323 insertions(+), 210 deletions(-) (limited to 'src/plugins/Effect') diff --git a/src/plugins/Effect/bs2b/CMakeLists.txt b/src/plugins/Effect/bs2b/CMakeLists.txt index 57f5f44d5..21c6f63da 100644 --- a/src/plugins/Effect/bs2b/CMakeLists.txt +++ b/src/plugins/Effect/bs2b/CMakeLists.txt @@ -50,6 +50,11 @@ QT4_WRAP_CPP(libbs2b_MOC_SRCS ${libbs2b_MOC_HDRS}) pkg_search_module(BS2B libbs2b) +IF(BS2B_VERSION VERSION_LESS 3.0.0) +UNSET(BS2B_FOUND CACHE) +ENDIF(BS2B_VERSION VERSION_LESS 3.0.0) + + # user interface diff --git a/src/plugins/Effect/bs2b/bs2bplugin.cpp b/src/plugins/Effect/bs2b/bs2bplugin.cpp index 494ee43b7..45785e921 100644 --- a/src/plugins/Effect/bs2b/bs2bplugin.cpp +++ b/src/plugins/Effect/bs2b/bs2bplugin.cpp @@ -24,19 +24,22 @@ #include #include "bs2bplugin.h" +Bs2bPlugin *Bs2bPlugin::m_instance = 0; + Bs2bPlugin::Bs2bPlugin(QObject* parent) : Effect(parent) { + m_instance = this; m_bs2b_handler = bs2b_open(); QSettings settings(Qmmp::configFile(), QSettings::IniFormat); - bs2b_set_level(m_bs2b_handler, settings.value("bs2b/level", BS2B_DEFAULT_CLEVEL).toInt()); + bs2b_set_level(m_bs2b_handler, settings.value("bs2b/level", BS2B_DEFAULT_CLEVEL).toUInt()); } Bs2bPlugin::~Bs2bPlugin() { + m_instance = 0; bs2b_clear(m_bs2b_handler); } -#if (BS2B_VERSION_INT) >= 0x030000 #define CASE_BS2B(bitsPerSample, dataType, functionToCall, samples, out_data) \ case bitsPerSample: \ { \ @@ -44,19 +47,6 @@ Bs2bPlugin::~Bs2bPlugin() functionToCall(m_bs2b_handler, data, samples); \ } \ break; -#else -#define CASE_BS2B(bitsPerSample, dataType, functionToCall, samples, out_data) \ - case bitsPerSample: \ - { \ - dataType * data = reinterpret_cast(*out_data); \ - while (samples--) { \ - functionToCall(m_bs2b_handler, data); \ - data += 2; \ - } \ - } \ - break; - -#endif ulong Bs2bPlugin::process(char *in_data, const ulong size, char **out_data) { @@ -65,23 +55,17 @@ ulong Bs2bPlugin::process(char *in_data, const ulong size, char **out_data) return size; uint samples = size / (bitsPerSample() / 8) / 2; - + m_mutex.lock(); switch (bitsPerSample()) { -#if (BS2B_VERSION_INT) >= 0x030000 CASE_BS2B(8, int8_t, bs2b_cross_feed_s8, samples, out_data) CASE_BS2B(16, int16_t, bs2b_cross_feed_s16le, samples, out_data) CASE_BS2B(24, bs2b_int24_t, bs2b_cross_feed_s24, samples, out_data) CASE_BS2B(32, int32_t, bs2b_cross_feed_s32le, samples, out_data) -#else - CASE_BS2B(8, char, bs2b_cross_feed_s8, samples, out_data) - CASE_BS2B(16, short, bs2b_cross_feed_16, samples, out_data) - CASE_BS2B(32, long, bs2b_cross_feed_32, samples, out_data) -#endif default: ; // noop } - + m_mutex.unlock(); return size; } @@ -90,3 +74,15 @@ void Bs2bPlugin::configure(quint32 freq, int chan, int res) Effect::configure(freq, chan, res); bs2b_set_srate(m_bs2b_handler,freq); } + +void Bs2bPlugin::setCrossfeedLevel(uint32_t level) +{ + m_mutex.lock(); + bs2b_set_level(m_bs2b_handler, level); + m_mutex.unlock(); +} + +Bs2bPlugin* Bs2bPlugin::instance() +{ + return m_instance; +} diff --git a/src/plugins/Effect/bs2b/bs2bplugin.h b/src/plugins/Effect/bs2b/bs2bplugin.h index 1ac94323f..02590d157 100644 --- a/src/plugins/Effect/bs2b/bs2bplugin.h +++ b/src/plugins/Effect/bs2b/bs2bplugin.h @@ -20,6 +20,7 @@ #ifndef BS2BPLUGIN_H #define BS2BPLUGIN_H +#include #include #include @@ -37,9 +38,13 @@ public: ulong process(char *in_data, const ulong size, char **out_data); void configure(quint32 freq, int chan, int res); + void setCrossfeedLevel(uint32_t level); + static Bs2bPlugin* instance(); private: t_bs2bdp m_bs2b_handler; + QMutex m_mutex; + static Bs2bPlugin *m_instance; }; #endif diff --git a/src/plugins/Effect/bs2b/settingsdialog.cpp b/src/plugins/Effect/bs2b/settingsdialog.cpp index 68f3ecd3f..9d29a1a77 100644 --- a/src/plugins/Effect/bs2b/settingsdialog.cpp +++ b/src/plugins/Effect/bs2b/settingsdialog.cpp @@ -21,7 +21,7 @@ #include #include #include - +#include "bs2bplugin.h" #include "settingsdialog.h" SettingsDialog::SettingsDialog(QWidget *parent) @@ -29,16 +29,12 @@ SettingsDialog::SettingsDialog(QWidget *parent) { ui.setupUi(this); setAttribute(Qt::WA_DeleteOnClose, TRUE); + ui.feedSlider->setRange(BS2B_MINFEED, BS2B_MAXFEED); + ui.freqSlider->setRange(BS2B_MINFCUT, BS2B_MAXFCUT); QSettings settings(Qmmp::configFile(), QSettings::IniFormat); - ui.levelComboBox->addItem (tr("low"), BS2B_LOW_CLEVEL); - ui.levelComboBox->addItem (tr("middle"), BS2B_MIDDLE_CLEVEL); - ui.levelComboBox->addItem (tr("high"), BS2B_HIGH_CLEVEL); - ui.levelComboBox->addItem (tr("low (easy version)"), BS2B_LOW_ECLEVEL); - ui.levelComboBox->addItem (tr("middle (easy version)"), BS2B_MIDDLE_ECLEVEL); - ui.levelComboBox->addItem (tr("high (easy version) [default]"), BS2B_HIGH_ECLEVEL); - int index = ui.levelComboBox->findData(settings.value("bs2b/level", BS2B_DEFAULT_CLEVEL).toInt()); - if (index >= 0) - ui.levelComboBox->setCurrentIndex(index); + m_level = settings.value("bs2b/level", BS2B_DEFAULT_CLEVEL).toUInt(); + ui.feedSlider->setValue(m_level >> 16); + ui.freqSlider->setValue(m_level & 0xffff); } SettingsDialog::~SettingsDialog() @@ -48,6 +44,45 @@ SettingsDialog::~SettingsDialog() void SettingsDialog::accept() { QSettings settings(Qmmp::configFile(), QSettings::IniFormat); - settings.setValue("bs2b/level", ui.levelComboBox->itemData(ui.levelComboBox->currentIndex()).toInt()); + settings.setValue("bs2b/level", ui.feedSlider->value() << 16 | ui.freqSlider->value()); QDialog::accept(); } + +void SettingsDialog::SettingsDialog::reject() +{ + if (Bs2bPlugin::instance()) //restore crossfeed settings + Bs2bPlugin::instance()->setCrossfeedLevel(m_level); + QDialog::reject(); +} + +void SettingsDialog::on_freqSlider_valueChanged (int value) +{ + ui.freqLabel->setText(QString(tr("%1 Hz, %2 us")).arg(value).arg(bs2b_level_delay(value))); + if (Bs2bPlugin::instance()) + Bs2bPlugin::instance()->setCrossfeedLevel(ui.feedSlider->value() << 16 | ui.freqSlider->value()); +} + +void SettingsDialog::on_feedSlider_valueChanged (int value) +{ + ui.feedLabel->setText(QString(tr("%1 dB")).arg((double)value/10)); + if (Bs2bPlugin::instance()) + Bs2bPlugin::instance()->setCrossfeedLevel(ui.feedSlider->value() << 16 | ui.freqSlider->value()); +} + +void SettingsDialog::on_defaultButton_pressed() +{ + ui.feedSlider->setValue(BS2B_DEFAULT_CLEVEL >> 16); + ui.freqSlider->setValue(BS2B_DEFAULT_CLEVEL & 0xffff); +} + +void SettingsDialog::on_cmButton_pressed () +{ + ui.feedSlider->setValue(BS2B_CMOY_CLEVEL >> 16); + ui.freqSlider->setValue(BS2B_CMOY_CLEVEL & 0xffff); +} + +void SettingsDialog::on_jmButton_pressed () +{ + ui.feedSlider->setValue(BS2B_JMEIER_CLEVEL >> 16); + ui.freqSlider->setValue(BS2B_JMEIER_CLEVEL & 0xffff); +} diff --git a/src/plugins/Effect/bs2b/settingsdialog.h b/src/plugins/Effect/bs2b/settingsdialog.h index 0cc842fb4..8c0dd74f8 100644 --- a/src/plugins/Effect/bs2b/settingsdialog.h +++ b/src/plugins/Effect/bs2b/settingsdialog.h @@ -37,9 +37,18 @@ public: public slots: virtual void accept(); + virtual void reject(); + +private slots: + void on_freqSlider_valueChanged (int value); + void on_feedSlider_valueChanged (int value); + void on_defaultButton_pressed(); + void on_cmButton_pressed (); + void on_jmButton_pressed (); private: Ui::SettingsDialog ui; + uint32_t m_level; }; diff --git a/src/plugins/Effect/bs2b/settingsdialog.ui b/src/plugins/Effect/bs2b/settingsdialog.ui index 72f54da02..8d7b5298c 100644 --- a/src/plugins/Effect/bs2b/settingsdialog.ui +++ b/src/plugins/Effect/bs2b/settingsdialog.ui @@ -6,58 +6,113 @@ 0 0 - 293 - 69 + 383 + 123 BS2B Plugin Settings - + 6 + + 9 + 6 6 - - - - Crossfeed level: + + + + Crossfeed level + + + + + Qt::Horizontal + + + + + + + - + + + + + + + Qt::Horizontal + + + + + + + - + + + + - - - - - - - Qt::Horizontal - - - - 228 - 24 - - - - - - - - - 0 - 0 - - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - + + + + + + Default + + + + + + + C.Moy + + + + + + + J. Meier + + + + + + + Qt::Horizontal + + + + 142 + 20 + + + + + + + + + 0 + 0 + + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + diff --git a/src/plugins/Effect/bs2b/translations/bs2b_plugin_cs.ts b/src/plugins/Effect/bs2b/translations/bs2b_plugin_cs.ts index 375716be7..9febe1683 100644 --- a/src/plugins/Effect/bs2b/translations/bs2b_plugin_cs.ts +++ b/src/plugins/Effect/bs2b/translations/bs2b_plugin_cs.ts @@ -47,43 +47,44 @@ SettingsDialog - - low + + BS2B Plugin Settings - - middle + + Crossfeed level - - high + + + - - - low (easy version) + + Default - - middle (easy version) + + C.Moy - - high (easy version) [default] + + J. Meier - - BS2B Plugin Settings + + %1 Hz, %2 us - - Crossfeed level: + + %1 dB diff --git a/src/plugins/Effect/bs2b/translations/bs2b_plugin_de.ts b/src/plugins/Effect/bs2b/translations/bs2b_plugin_de.ts index 2b06a190e..3a0673f37 100644 --- a/src/plugins/Effect/bs2b/translations/bs2b_plugin_de.ts +++ b/src/plugins/Effect/bs2b/translations/bs2b_plugin_de.ts @@ -48,43 +48,44 @@ SettingsDialog - - low - Niedrig + + BS2B Plugin Settings + Einstellungen des BS2B-Plugins - - middle - Mittel + + Crossfeed level + - - high - Hoch + + + - + - - low (easy version) + + Default - - middle (easy version) + + C.Moy - - high (easy version) [default] + + J. Meier - - BS2B Plugin Settings - Einstellungen des BS2B-Plugins + + %1 Hz, %2 us + - - Crossfeed level: + + %1 dB diff --git a/src/plugins/Effect/bs2b/translations/bs2b_plugin_pl.ts b/src/plugins/Effect/bs2b/translations/bs2b_plugin_pl.ts index 0b6084f45..b1913ed69 100644 --- a/src/plugins/Effect/bs2b/translations/bs2b_plugin_pl.ts +++ b/src/plugins/Effect/bs2b/translations/bs2b_plugin_pl.ts @@ -47,44 +47,45 @@ SettingsDialog - - low - niska + + BS2B Plugin Settings + Ustawienia wtyczki BS2B - - middle - średnia + + Crossfeed level + - - high - wysoka + + + - + - - low (easy version) - niska (łatwa wersja) + + Default + - - middle (easy version) - średnia (łatwa wersja) + + C.Moy + - - high (easy version) [default] - wysoka (łatwa wersja) + + J. Meier + - - BS2B Plugin Settings - Ustawienia wtyczki BS2B + + %1 Hz, %2 us + - - Crossfeed level: - Poziom Crossfeed: + + %1 dB + diff --git a/src/plugins/Effect/bs2b/translations/bs2b_plugin_ru.ts b/src/plugins/Effect/bs2b/translations/bs2b_plugin_ru.ts index 4bd1d222d..19c4f3f87 100644 --- a/src/plugins/Effect/bs2b/translations/bs2b_plugin_ru.ts +++ b/src/plugins/Effect/bs2b/translations/bs2b_plugin_ru.ts @@ -47,44 +47,45 @@ SettingsDialog - - low - низкий + + BS2B Plugin Settings + Настройки модуля BS2B - - middle - средний + + Crossfeed level + Уровень взаимосмешения - - high - высокий + + + - + - - low (easy version) - низкий (упрощённая версия) + + Default + По умолчанию - - middle (easy version) - средний (упрощённая версия) + + C.Moy + - - high (easy version) [default] - выскоий (упр. версия) [по-умолчанию] + + J. Meier + - - BS2B Plugin Settings - Настройки модуля BS2B + + %1 Hz, %2 us + %1 Гц, %2 мкс - - Crossfeed level: - Уровень взаимосмешения: + + %1 dB + %1 дБ diff --git a/src/plugins/Effect/bs2b/translations/bs2b_plugin_uk_UA.ts b/src/plugins/Effect/bs2b/translations/bs2b_plugin_uk_UA.ts index 5711e4722..71de1fb3c 100644 --- a/src/plugins/Effect/bs2b/translations/bs2b_plugin_uk_UA.ts +++ b/src/plugins/Effect/bs2b/translations/bs2b_plugin_uk_UA.ts @@ -1,5 +1,6 @@ - + + EffectBs2bFactory @@ -47,44 +48,45 @@ SettingsDialog - - low - низький + + BS2B Plugin Settings + Налаштування модуля BS2B - - middle - середній + + Crossfeed level + - - high - високий + + + - + - - low (easy version) - низький (спрощена версія) + + Default + - - middle (easy version) - середній (спрощена версія) + + C.Moy + - - high (easy version) [default] - високий (спрощена версія) [за умовчанням] + + J. Meier + - - BS2B Plugin Settings - Налаштування модуля BS2B + + %1 Hz, %2 us + - - Crossfeed level: - Рівень взаємозмішування: + + %1 dB + diff --git a/src/plugins/Effect/bs2b/translations/bs2b_plugin_zh_CN.ts b/src/plugins/Effect/bs2b/translations/bs2b_plugin_zh_CN.ts index 375716be7..9febe1683 100644 --- a/src/plugins/Effect/bs2b/translations/bs2b_plugin_zh_CN.ts +++ b/src/plugins/Effect/bs2b/translations/bs2b_plugin_zh_CN.ts @@ -47,43 +47,44 @@ SettingsDialog - - low + + BS2B Plugin Settings - - middle + + Crossfeed level - - high + + + - - - low (easy version) + + Default - - middle (easy version) + + C.Moy - - high (easy version) [default] + + J. Meier - - BS2B Plugin Settings + + %1 Hz, %2 us - - Crossfeed level: + + %1 dB diff --git a/src/plugins/Effect/bs2b/translations/bs2b_plugin_zh_TW.ts b/src/plugins/Effect/bs2b/translations/bs2b_plugin_zh_TW.ts index 375716be7..9febe1683 100644 --- a/src/plugins/Effect/bs2b/translations/bs2b_plugin_zh_TW.ts +++ b/src/plugins/Effect/bs2b/translations/bs2b_plugin_zh_TW.ts @@ -47,43 +47,44 @@ SettingsDialog - - low + + BS2B Plugin Settings - - middle + + Crossfeed level - - high + + + - - - low (easy version) + + Default - - middle (easy version) + + C.Moy - - high (easy version) [default] + + J. Meier - - BS2B Plugin Settings + + %1 Hz, %2 us - - Crossfeed level: + + %1 dB -- cgit v1.2.3-13-gbd6f