diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2010-04-18 13:27:36 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2010-04-18 13:27:36 +0000 |
| commit | 1777472932392a99c8ea7da8b35dee0535998ae5 (patch) | |
| tree | 0ea698b9d3610348e49caeb2b979025558534052 /src/plugins/Effect/ladspa/ladspahost.cpp | |
| parent | 03580534cc6896edcddcb9a8e1e10b9bdaa819d5 (diff) | |
| download | qmmp-1777472932392a99c8ea7da8b35dee0535998ae5.tar.gz qmmp-1777472932392a99c8ea7da8b35dee0535998ae5.tar.bz2 qmmp-1777472932392a99c8ea7da8b35dee0535998ae5.zip | |
fixed ladspa plugin
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@1681 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Effect/ladspa/ladspahost.cpp')
| -rw-r--r-- | src/plugins/Effect/ladspa/ladspahost.cpp | 53 |
1 files changed, 50 insertions, 3 deletions
diff --git a/src/plugins/Effect/ladspa/ladspahost.cpp b/src/plugins/Effect/ladspa/ladspahost.cpp index 2e84fe205..f18b9312b 100644 --- a/src/plugins/Effect/ladspa/ladspahost.cpp +++ b/src/plugins/Effect/ladspa/ladspahost.cpp @@ -23,6 +23,7 @@ #include <QByteArray> #include <QDir> #include <QFileInfo> +#include <QSettings> #include <math.h> #include <stdlib.h> #include <dlfcn.h> @@ -46,15 +47,59 @@ LADSPAHost::LADSPAHost(QObject *parent) : QObject(parent) m_freq = 0; m_instance = this; findAllPlugins(); + + QSettings settings(Qmmp::configFile(), QSettings::IniFormat); + int p = settings.value("LADSPA/plugins_number", 0).toInt(); + for(int i = 0; i < p; ++i) + { + QString section = QString("LADSPA_%1/").arg(i); + int id = settings.value(section +"id").toInt(); + QString file = settings.value(section +"file").toString(); + int ports = settings.value(section +"ports").toInt(); + + + LADSPAPlugin *plugin = 0; + foreach(LADSPAPlugin *p, plugins()) + { + if(p->unique_id == id) + { + plugin = p; + break; + } + } + if(!plugin) + continue; + + LADSPAEffect *effect = addPlugin(plugin); + for(int j = 0; j < ports; ++j) + { + double value = settings.value(section + QString("port%1").arg(j)).toDouble(); + effect->knobs[j] = value; + } + } } LADSPAHost::~LADSPAHost() { m_instance = 0; - foreach(LADSPAEffect *instance, m_effects) + QSettings settings(Qmmp::configFile(), QSettings::IniFormat); + settings.setValue("LADSPA/plugins_number", m_effects.count()); + for(int i = 0; i < m_effects.count(); ++i) { - unload(instance); + QString section = QString("LADSPA_%1/").arg(i); + settings.setValue(section +"id", (quint64)m_effects[i]->descriptor->UniqueID); + settings.setValue(section +"file", m_effects[i]->fileName); + + int ports = qMin((int)m_effects[i]->descriptor->PortCount, MAX_KNOBS); + settings.setValue(section +"ports", ports); + for(int j = 0; j < ports; ++j) + { + settings.setValue(section + QString("port%1").arg(j), + m_effects[i]->knobs[j]); + } } + foreach(LADSPAEffect *effect, m_effects) + unload(effect); } void LADSPAHost::configure(quint32 freq, int chan, Qmmp::AudioFormat format) @@ -93,7 +138,7 @@ QList <LADSPAPlugin *> LADSPAHost::plugins() return m_plugins; } -QList <LADSPAEffect *> LADSPAHost::runningPlugins() +QList <LADSPAEffect *> LADSPAHost::effects() { return m_effects; } @@ -112,6 +157,8 @@ void LADSPAHost::findAllPlugins() /* Fallback, look in obvious places */ directories << "/usr/lib/ladspa"; directories << "/usr/local/lib/ladspa"; + directories << "/usr/lib64/ladspa"; + directories << "/usr/local/lib64/ladspa"; } else directories = ladspa_path.split(':'); |
