aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/plugins/Effect/bs2b/bs2bplugin.cpp2
-rw-r--r--src/plugins/Effect/bs2b/bs2bplugin.h3
-rw-r--r--src/plugins/Effect/bs2b/effectbs2bfactory.cpp14
-rw-r--r--src/plugins/Effect/bs2b/effectbs2bfactory.h4
-rw-r--r--src/plugins/Effect/ladspa/effectladspafactory.cpp4
-rw-r--r--src/plugins/Effect/ladspa/effectladspafactory.h2
-rw-r--r--src/plugins/Effect/ladspa/ladspaplugin.cpp57
-rw-r--r--src/plugins/Effect/ladspa/ladspaplugin.h23
-rw-r--r--src/plugins/Effect/ladspa/settingsdialog.cpp35
-rw-r--r--src/plugins/Effect/srconverter/effectsrconverterfactory.cpp16
-rw-r--r--src/plugins/Effect/srconverter/effectsrconverterfactory.h6
-rw-r--r--src/plugins/Effect/srconverter/srconverter.cpp2
-rw-r--r--src/plugins/Effect/srconverter/srconverter.h10
-rw-r--r--src/qmmp/effect.cpp9
-rw-r--r--src/qmmp/effect.h10
-rw-r--r--src/qmmp/effectfactory.h3
-rw-r--r--src/qmmp/qmmpaudioengine.cpp3
17 files changed, 104 insertions, 99 deletions
diff --git a/src/plugins/Effect/bs2b/bs2bplugin.cpp b/src/plugins/Effect/bs2b/bs2bplugin.cpp
index 45785e921..d2ced9bb9 100644
--- a/src/plugins/Effect/bs2b/bs2bplugin.cpp
+++ b/src/plugins/Effect/bs2b/bs2bplugin.cpp
@@ -26,7 +26,7 @@
Bs2bPlugin *Bs2bPlugin::m_instance = 0;
-Bs2bPlugin::Bs2bPlugin(QObject* parent) : Effect(parent)
+Bs2bPlugin::Bs2bPlugin() : Effect()
{
m_instance = this;
m_bs2b_handler = bs2b_open();
diff --git a/src/plugins/Effect/bs2b/bs2bplugin.h b/src/plugins/Effect/bs2b/bs2bplugin.h
index 02590d157..93ad482bb 100644
--- a/src/plugins/Effect/bs2b/bs2bplugin.h
+++ b/src/plugins/Effect/bs2b/bs2bplugin.h
@@ -30,9 +30,8 @@
class Bs2bPlugin : public Effect
{
- Q_OBJECT
public:
- Bs2bPlugin(QObject *parent = 0);
+ Bs2bPlugin();
virtual ~Bs2bPlugin();
diff --git a/src/plugins/Effect/bs2b/effectbs2bfactory.cpp b/src/plugins/Effect/bs2b/effectbs2bfactory.cpp
index 037aa7b2f..3a61184b2 100644
--- a/src/plugins/Effect/bs2b/effectbs2bfactory.cpp
+++ b/src/plugins/Effect/bs2b/effectbs2bfactory.cpp
@@ -33,18 +33,18 @@ const EffectProperties EffectBs2bFactory::properties() const
properties.hasSettings = TRUE;
properties.hasAbout = TRUE;
return properties;
-};
+}
-Effect *EffectBs2bFactory::create(QObject *parent)
+Effect *EffectBs2bFactory::create()
{
- return new Bs2bPlugin(parent);
-};
+ return new Bs2bPlugin();
+}
void EffectBs2bFactory::showSettings(QWidget *parent)
{
SettingsDialog *s = new SettingsDialog(parent);
s ->show();
-};
+}
void EffectBs2bFactory::showAbout(QWidget *parent)
{
@@ -57,7 +57,7 @@ void EffectBs2bFactory::showAbout(QWidget *parent)
"<p>"+tr("Developers:")+"<br>"+
tr("Ilya Kotov") + " &lt;forkotov02@hotmail.ru&gt;"+"<br>"+
tr("Sebastian Pipping") + " &lt;sebastian@pipping.org&gt;"+"</p>");
-};
+}
QTranslator *EffectBs2bFactory::createTranslator(QObject *parent)
{
@@ -65,6 +65,6 @@ QTranslator *EffectBs2bFactory::createTranslator(QObject *parent)
QString locale = Qmmp::systemLanguageID();
translator->load(QString(":/bs2b_plugin_") + locale);
return translator;
-};
+}
Q_EXPORT_PLUGIN2(bs2b,EffectBs2bFactory)
diff --git a/src/plugins/Effect/bs2b/effectbs2bfactory.h b/src/plugins/Effect/bs2b/effectbs2bfactory.h
index 231315605..72b7fa9b4 100644
--- a/src/plugins/Effect/bs2b/effectbs2bfactory.h
+++ b/src/plugins/Effect/bs2b/effectbs2bfactory.h
@@ -20,9 +20,7 @@
#ifndef EFFECTBS2BFACTORY_H
#define EFFECTBS2BFACTORY_H
-
#include <QObject>
-
#include <qmmp/effectfactory.h>
#include <qmmp/effect.h>
@@ -36,7 +34,7 @@ Q_INTERFACES(EffectFactory);
public:
const EffectProperties properties() const;
- Effect *create(QObject *parent);
+ Effect *create();
void showSettings(QWidget *parent);
void showAbout(QWidget *parent);
QTranslator *createTranslator(QObject *parent);
diff --git a/src/plugins/Effect/ladspa/effectladspafactory.cpp b/src/plugins/Effect/ladspa/effectladspafactory.cpp
index c2536969b..6c517408f 100644
--- a/src/plugins/Effect/ladspa/effectladspafactory.cpp
+++ b/src/plugins/Effect/ladspa/effectladspafactory.cpp
@@ -34,9 +34,9 @@ const EffectProperties EffectLADSPAFactory::properties() const
return properties;
}
-Effect *EffectLADSPAFactory::create(QObject *parent)
+Effect *EffectLADSPAFactory::create()
{
- return new LADSPAHost(parent);
+ return new LADSPAHost();
}
void EffectLADSPAFactory::showSettings(QWidget *parent)
diff --git a/src/plugins/Effect/ladspa/effectladspafactory.h b/src/plugins/Effect/ladspa/effectladspafactory.h
index 9a9c5f184..80714d5e4 100644
--- a/src/plugins/Effect/ladspa/effectladspafactory.h
+++ b/src/plugins/Effect/ladspa/effectladspafactory.h
@@ -34,7 +34,7 @@ Q_INTERFACES(EffectFactory);
public:
const EffectProperties properties() const;
- Effect *create(QObject *parent);
+ Effect *create();
void showSettings(QWidget *parent);
void showAbout(QWidget *parent);
QTranslator *createTranslator(QObject *parent);
diff --git a/src/plugins/Effect/ladspa/ladspaplugin.cpp b/src/plugins/Effect/ladspa/ladspaplugin.cpp
index 99392a5d0..bef363397 100644
--- a/src/plugins/Effect/ladspa/ladspaplugin.cpp
+++ b/src/plugins/Effect/ladspa/ladspaplugin.cpp
@@ -22,13 +22,10 @@
#include <QByteArray>
#include <QDir>
#include <QFileInfo>
-#include <QFormLayout>
-#include <QWidget>
#include <math.h>
#include <stdlib.h>
#include <dlfcn.h>
#include <qmmp/qmmp.h>
-#include "ladspaslider.h"
#include "ladspaplugin.h"
#ifndef PATH_MAX
@@ -40,7 +37,7 @@
LADSPAHost *LADSPAHost::m_instance = 0;
-LADSPAHost::LADSPAHost(QObject* parent) : Effect(parent)
+LADSPAHost::LADSPAHost() : Effect()
{
m_instance = this;
findAllPlugins();
@@ -366,42 +363,34 @@ LADSPAEffect *LADSPAHost::addPlugin(LADSPAPlugin *plugin)
instance->stereo = plugin->stereo;
if (channels() && sampleRate())
bootPlugin(instance);
- draw_plugin(instance);
+ initialize(instance);
m_effects.append(instance);
return instance;
}
-void LADSPAHost::draw_plugin(LADSPAEffect *instance)
+void LADSPAHost::initialize(LADSPAEffect *instance)
{
const LADSPA_Descriptor *plugin = instance->descriptor;
const LADSPA_PortRangeHint *hints = plugin->PortRangeHints;
LADSPA_Data fact, min, max, step, start;
int dp;
- unsigned long k;
- bool no_ui = TRUE;
- QWidget *widget = new QWidget();
- QFormLayout *formLayout = new QFormLayout(widget);
- widget->setLayout(formLayout);
-
- for (k = 0; k < MAX_KNOBS && k < plugin->PortCount; ++k)
+ for (unsigned long k = 0; k < MAX_KNOBS && k < plugin->PortCount; ++k)
{
if (!LADSPA_IS_PORT_CONTROL(plugin->PortDescriptors[k]))
continue;
- no_ui = FALSE;
- //hbox = gtk_hbox_new(FALSE, 3);
- //widget = gtk_label_new(plugin->PortNames[k]);
- //gtk_container_add(GTK_CONTAINER(hbox), widget);
+
+ LADSPAControl *c = new LADSPAControl;
+ c->name = QString(plugin->PortNames[k]);
if (LADSPA_IS_HINT_TOGGLED(hints[k].HintDescriptor))
{
- /*widget = gtk_toggle_button_new_with_label("Press");
- g_signal_connect(G_OBJECT(widget), "toggled", G_CALLBACK(toggled), &(instance->knobs[k]));
- gtk_container_add(GTK_CONTAINER(hbox), widget);
- gtk_container_add(GTK_CONTAINER(vbox), hbox);*/
-
-
- //formLayout->addRow(plugin->PortNames[k], slider);
+ c->type = LADSPAControl::BUTTON;
+ c->min = 0;
+ c->max = 0;
+ c->step = 0;
+ c->value = &instance->knobs[k];
+ instance->controls << c;
continue;
}
@@ -488,19 +477,11 @@ void LADSPAHost::draw_plugin(LADSPAEffect *instance)
start = min * 0.5f + max * 0.5f;
instance->knobs[k] = start;
- LADSPASlider *slider = new LADSPASlider(min, max, step, &instance->knobs[k], this, widget);
-
- //slider->setEnabled(!LADSPA_IS_PORT_OUTPUT(plugin->PortDescriptors[k]));
-
- formLayout->addRow(plugin->PortNames[k], slider);
+ c->type = LADSPAControl::SLIDER;
+ c->min = min;
+ c->max = max;
+ c->step = step;
+ c->value = &instance->knobs[k];
+ instance->controls << c;
}
- widget->setLayout(formLayout);
- widget->setFixedSize(widget->sizeHint());
- instance->widget = widget;
-
- /*if (no_ui)
- {
- widget = gtk_label_new(_("This LADSPA plugin has no user controls"));
- gtk_container_add(GTK_CONTAINER(vbox), widget);
- }*/
}
diff --git a/src/plugins/Effect/ladspa/ladspaplugin.h b/src/plugins/Effect/ladspa/ladspaplugin.h
index c8d61acb7..fa9b0200e 100644
--- a/src/plugins/Effect/ladspa/ladspaplugin.h
+++ b/src/plugins/Effect/ladspa/ladspaplugin.h
@@ -45,6 +45,22 @@ public:
bool stereo;
};
+class LADSPAControl
+{
+public:
+ enum Type
+ {
+ BUTTON = 0,
+ SLIDER
+ };
+ double min;
+ double max;
+ double step;
+ LADSPA_Data *value;
+ bool type;
+ QString name;
+};
+
class LADSPAEffect
{
public:
@@ -55,15 +71,14 @@ public:
LADSPA_Handle handle; /* left or mono */
LADSPA_Handle handle2; /* right stereo */
LADSPA_Data knobs[MAX_KNOBS];
- QWidget *widget;
+ QList <LADSPAControl*> controls;
};
class LADSPAHost : public Effect
{
- Q_OBJECT
public:
- LADSPAHost(QObject *parent = 0);
+ LADSPAHost();
virtual ~LADSPAHost();
@@ -84,7 +99,7 @@ private:
void findPlugins(const QString &path);
LADSPAEffect *load(const QString &path, long num);
void portAssign(LADSPAEffect *instance);
- void draw_plugin(LADSPAEffect *instance);
+ void initialize(LADSPAEffect *instance);
QList <LADSPAPlugin *> m_plugins;
QList <LADSPAEffect *> m_effects;
diff --git a/src/plugins/Effect/ladspa/settingsdialog.cpp b/src/plugins/Effect/ladspa/settingsdialog.cpp
index 4d0c33a6f..e4d78a698 100644
--- a/src/plugins/Effect/ladspa/settingsdialog.cpp
+++ b/src/plugins/Effect/ladspa/settingsdialog.cpp
@@ -22,7 +22,11 @@
#include <QApplication>
#include <QStyle>
#include <QStandardItemModel>
+#include <QFormLayout>
+#include <QWidget>
+#include <QLabel>
#include <qmmp/qmmp.h>
+#include "ladspaslider.h"
#include "ladspaplugin.h"
#include "settingsdialog.h"
@@ -90,13 +94,34 @@ void SettingsDialog::on_configureButton_clicked()
{
LADSPAHost *l = LADSPAHost::instance();
QModelIndex index = ui.runningListWidget->currentIndex ();
- if(index.isValid())
+ if(!index.isValid())
+ return;
+
+ LADSPAEffect *effect = l->runningPlugins().at(index.row());
+ QDialog *dialog = new QDialog(this);
+ dialog->setWindowTitle(effect->descriptor->Name);
+ QFormLayout *formLayout = new QFormLayout(dialog);
+
+ foreach(LADSPAControl *c, effect->controls)
+ {
+ switch ((int) c->type)
+ {
+ case LADSPAControl::BUTTON:
+ break;
+ case LADSPAControl::SLIDER:
+ LADSPASlider *slider = new LADSPASlider(c->min, c->max, c->step, c->value, l, dialog);
+ formLayout->addRow(c->name, slider);
+ }
+ }
+ if (effect->controls.isEmpty())
{
- l->runningPlugins().at(index.row())->widget->setParent(this);
- l->runningPlugins().at(index.row())->widget->setWindowFlags(Qt::Window);
- l->runningPlugins().at(index.row())->widget->show();
- //updateRunningPlugins();
+ QLabel *label = new QLabel(tr("This LADSPA plugin has no user controls"), dialog);
+ formLayout->addRow(label);
}
+ dialog->setLayout(formLayout);
+ dialog->setFixedSize(dialog->sizeHint());
+ dialog->exec();
+ dialog->deleteLater();
}
void SettingsDialog::accept()
diff --git a/src/plugins/Effect/srconverter/effectsrconverterfactory.cpp b/src/plugins/Effect/srconverter/effectsrconverterfactory.cpp
index 6b259fa89..86490cdfc 100644
--- a/src/plugins/Effect/srconverter/effectsrconverterfactory.cpp
+++ b/src/plugins/Effect/srconverter/effectsrconverterfactory.cpp
@@ -21,8 +21,8 @@
#include <QtGui>
#include <qmmp/qmmp.h>
#include "settingsdialog.h"
-#include "effectsrconverterfactory.h"
#include "srconverter.h"
+#include "effectsrconverterfactory.h"
const EffectProperties EffectSRConverterFactory::properties() const
{
@@ -32,25 +32,25 @@ const EffectProperties EffectSRConverterFactory::properties() const
properties.hasSettings = TRUE;
properties.hasAbout = TRUE;
return properties;
-};
+}
-Effect *EffectSRConverterFactory::create(QObject *parent)
+Effect *EffectSRConverterFactory::create()
{
- return new SRConverter(parent);
-};
+ return new SRConverter();
+}
void EffectSRConverterFactory::showSettings(QWidget *parent)
{
SettingsDialog *s = new SettingsDialog(parent);
s ->show();
-};
+}
void EffectSRConverterFactory::showAbout(QWidget *parent)
{
QMessageBox::about (parent, tr("About Sample Rate Converter Plugin"),
tr("Qmmp Sample Rate Converter Plugin")+"\n"+
tr("Writen by: Ilya Kotov <forkotov02@hotmail.ru>"));
-};
+}
QTranslator *EffectSRConverterFactory::createTranslator(QObject *parent)
{
@@ -58,6 +58,6 @@ QTranslator *EffectSRConverterFactory::createTranslator(QObject *parent)
QString locale = Qmmp::systemLanguageID();
translator->load(QString(":/srconverter_plugin_") + locale);
return translator;
-};
+}
Q_EXPORT_PLUGIN2(srconverter, EffectSRConverterFactory)
diff --git a/src/plugins/Effect/srconverter/effectsrconverterfactory.h b/src/plugins/Effect/srconverter/effectsrconverterfactory.h
index c9854a18b..fb98d4cb6 100644
--- a/src/plugins/Effect/srconverter/effectsrconverterfactory.h
+++ b/src/plugins/Effect/srconverter/effectsrconverterfactory.h
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2007 by Ilya Kotov *
+ * Copyright (C) 2007-2009 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -20,9 +20,7 @@
#ifndef EFFECTSRCONVERTERFACTORY_H
#define EFFECTSRCONVERTERFACTORY_H
-
#include <QObject>
-
#include <qmmp/effectfactory.h>
#include <qmmp/effect.h>
@@ -36,7 +34,7 @@ Q_INTERFACES(EffectFactory);
public:
const EffectProperties properties() const;
- Effect *create(QObject *parent);
+ Effect *create();
void showSettings(QWidget *parent);
void showAbout(QWidget *parent);
QTranslator *createTranslator(QObject *parent);
diff --git a/src/plugins/Effect/srconverter/srconverter.cpp b/src/plugins/Effect/srconverter/srconverter.cpp
index ca871e409..8a31bb18f 100644
--- a/src/plugins/Effect/srconverter/srconverter.cpp
+++ b/src/plugins/Effect/srconverter/srconverter.cpp
@@ -25,7 +25,7 @@
#include "srconverter.h"
-SRConverter::SRConverter(QObject* parent) : Effect(parent)
+SRConverter::SRConverter() : Effect()
{
m_isSrcAlloc = FALSE;
int converter_type_array[] = {SRC_SINC_BEST_QUALITY, SRC_SINC_MEDIUM_QUALITY, SRC_SINC_FASTEST,
diff --git a/src/plugins/Effect/srconverter/srconverter.h b/src/plugins/Effect/srconverter/srconverter.h
index e596c693a..bb4c2913c 100644
--- a/src/plugins/Effect/srconverter/srconverter.h
+++ b/src/plugins/Effect/srconverter/srconverter.h
@@ -20,12 +20,8 @@
#ifndef SRCONVERTER_H
#define SRCONVERTER_H
-#include <qmmp/effect.h>
-
-extern "C"
-{
#include <samplerate.h>
-}
+#include <qmmp/effect.h>
/**
@author Ilya Kotov <forkotov02@hotmail.ru>
@@ -33,10 +29,8 @@ extern "C"
class SRConverter : public Effect
{
- Q_OBJECT
public:
- SRConverter(QObject *parent = 0);
-
+ SRConverter();
virtual ~SRConverter();
ulong process(char *in_data, const ulong size, char **out_data);
diff --git a/src/qmmp/effect.cpp b/src/qmmp/effect.cpp
index eea1d40fb..4aa8b6c01 100644
--- a/src/qmmp/effect.cpp
+++ b/src/qmmp/effect.cpp
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2007 by Ilya Kotov *
+ * Copyright (C) 2007-2009 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -26,8 +26,7 @@
#include "effectfactory.h"
#include "effect.h"
-Effect::Effect(QObject *parent)
- : QObject(parent)
+Effect::Effect()
{
m_freq = 0;
m_chan = 0;
@@ -94,7 +93,7 @@ static void checkFactories()
}
}
-QList<Effect*> Effect::create(QObject *parent)
+QList<Effect*> Effect::create()
{
checkFactories();
QList<Effect*> effects;
@@ -102,7 +101,7 @@ QList<Effect*> Effect::create(QObject *parent)
foreach (factory, *factories)
{
if(isEnabled(factory))
- effects.append(factory->create(parent));
+ effects.append(factory->create());
}
return effects;
}
diff --git a/src/qmmp/effect.h b/src/qmmp/effect.h
index 85a37081f..a3a14ab0b 100644
--- a/src/qmmp/effect.h
+++ b/src/qmmp/effect.h
@@ -20,7 +20,6 @@
#ifndef EFFECT_H
#define EFFECT_H
-#include <QObject>
#include <QList>
#include <QStringList>
@@ -29,15 +28,13 @@ class EffectFactory;
/*! @brief The Effect class provides the base interface class of audio effects.
* @author Ilya Kotov <forkotov02@hotmail.ru>
*/
-class Effect : public QObject
+class Effect
{
- Q_OBJECT
public:
/*!
* Object contsructor.
- * @param parent Parent object.
*/
- Effect(QObject *parent = 0);
+ Effect();
/*!
* Destructor.
*/
@@ -71,9 +68,8 @@ public:
int bitsPerSample();
/*!
* Creates a list of enabled effects.
- * @param parent Parent object of all created Effect objects.
*/
- static QList<Effect*> create(QObject *parent = 0);
+ static QList<Effect*> create();
/*!
* Returns a list of effect factories.
*/
diff --git a/src/qmmp/effectfactory.h b/src/qmmp/effectfactory.h
index ae1762440..7d9d140f1 100644
--- a/src/qmmp/effectfactory.h
+++ b/src/qmmp/effectfactory.h
@@ -58,9 +58,8 @@ public:
virtual const EffectProperties properties() const = 0;
/*!
* Creates effect provided by plugin.
- * @param parent Parent object.
*/
- virtual Effect *create(QObject *parent) = 0;
+ virtual Effect *create() = 0;
/*!
* Shows settings dialog.
* @param parent Parent widget.
diff --git a/src/qmmp/qmmpaudioengine.cpp b/src/qmmp/qmmpaudioengine.cpp
index 0bbb639fe..08573da4d 100644
--- a/src/qmmp/qmmpaudioengine.cpp
+++ b/src/qmmp/qmmpaudioengine.cpp
@@ -46,7 +46,7 @@ QmmpAudioEngine::QmmpAudioEngine(QObject *parent)
setEQ(b, 0);
qRegisterMetaType<Qmmp::State>("Qmmp::State");
_blksize = Buffer::size();
- m_effects = Effect::create(this);
+ m_effects = Effect::create();
m_bks = Buffer::size();
m_decoder = 0;
m_output = 0;
@@ -60,6 +60,7 @@ QmmpAudioEngine::~QmmpAudioEngine()
if(m_output_buf)
delete [] m_output_buf;
m_output_buf = 0;
+ qDeleteAll(m_effects);
}
void QmmpAudioEngine::reset()