diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2015-12-27 11:09:46 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2015-12-27 11:09:46 +0000 |
| commit | b5dc393952c84dbd53c60afb8d367ad99bbd16ca (patch) | |
| tree | d8c1ffc992fa60391f04179550a946a056b9b4de /src/plugins/Effect/ladspa | |
| parent | d8525aed2bc18ac54e65a996d38df934966c0c7c (diff) | |
| download | qmmp-b5dc393952c84dbd53c60afb8d367ad99bbd16ca.tar.gz qmmp-b5dc393952c84dbd53c60afb8d367ad99bbd16ca.tar.bz2 qmmp-b5dc393952c84dbd53c60afb8d367ad99bbd16ca.zip | |
ported all effect plugins
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@5899 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Effect/ladspa')
| -rw-r--r-- | src/plugins/Effect/ladspa/ladspahelper.cpp | 10 | ||||
| -rw-r--r-- | src/plugins/Effect/ladspa/ladspahelper.h | 4 | ||||
| -rw-r--r-- | src/plugins/Effect/ladspa/ladspahost.cpp | 41 | ||||
| -rw-r--r-- | src/plugins/Effect/ladspa/ladspahost.h | 9 |
4 files changed, 31 insertions, 33 deletions
diff --git a/src/plugins/Effect/ladspa/ladspahelper.cpp b/src/plugins/Effect/ladspa/ladspahelper.cpp index 338f16757..b844040d6 100644 --- a/src/plugins/Effect/ladspa/ladspahelper.cpp +++ b/src/plugins/Effect/ladspa/ladspahelper.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2009-2014 by Ilya Kotov * + * Copyright (C) 2009-2015 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -33,11 +33,11 @@ LADSPAHelper::~LADSPAHelper() void LADSPAHelper::applyEffect(Buffer *b) { - LADSPAHost::instance()->applyEffect((qint16 *)b->data, b->nbytes); + LADSPAHost::instance()->applyEffect(b->data, b->samples); } -void LADSPAHelper::configure(quint32 freq, ChannelMap map, Qmmp::AudioFormat format) +void LADSPAHelper::configure(quint32 freq, ChannelMap map) { - LADSPAHost::instance()->configure(freq,map.count(),format); - Effect::configure(freq, map, format); + LADSPAHost::instance()->configure(freq,map.count()); + Effect::configure(freq, map); } diff --git a/src/plugins/Effect/ladspa/ladspahelper.h b/src/plugins/Effect/ladspa/ladspahelper.h index 0ff749628..5f85b59ad 100644 --- a/src/plugins/Effect/ladspa/ladspahelper.h +++ b/src/plugins/Effect/ladspa/ladspahelper.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2009-2014 by Ilya Kotov * + * Copyright (C) 2009-2015 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -33,7 +33,7 @@ public: virtual ~LADSPAHelper(); void applyEffect(Buffer *b); - void configure(quint32 freq, ChannelMap map, Qmmp::AudioFormat format); + void configure(quint32 freq, ChannelMap map); }; #endif // LADSPAHELPER_H diff --git a/src/plugins/Effect/ladspa/ladspahost.cpp b/src/plugins/Effect/ladspa/ladspahost.cpp index 730088bff..ff4078f4b 100644 --- a/src/plugins/Effect/ladspa/ladspahost.cpp +++ b/src/plugins/Effect/ladspa/ladspahost.cpp @@ -1,7 +1,7 @@ /*************************************************************************** * Copyright (C) 2002-2003 Nick Lamb <njl195@zepler.org.uk> * * Copyright (C) 2005 Giacomo Lozito <city_hunter@users.sf.net> * - * Copyright (C) 2009-2012 by Ilya Kotov <forkotov02@hotmail.ru> * + * Copyright (C) 2009-2015 by Ilya Kotov <forkotov02@hotmail.ru> * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * @@ -40,7 +40,6 @@ LADSPAHost *LADSPAHost::m_instance = 0; LADSPAHost::LADSPAHost(QObject *parent) : QObject(parent) { m_chan = 0; - m_prec = 0; m_freq = 0; m_instance = this; findAllPlugins(); @@ -99,10 +98,9 @@ LADSPAHost::~LADSPAHost() unload(effect); } -void LADSPAHost::configure(quint32 freq, int chan, Qmmp::AudioFormat format) +void LADSPAHost::configure(quint32 freq, int chan) { m_chan = chan; - m_prec = AudioParameters::sampleSize(format); m_freq = freq; foreach(LADSPAEffect *e, m_effects) { @@ -239,48 +237,47 @@ void LADSPAHost::bootPlugin(LADSPAEffect *instance) } } -int LADSPAHost::applyEffect(qint16 *d, int length) +int LADSPAHost::applyEffect(float *data, size_t samples) { - qint16 *raw16 = d; LADSPAEffect *instance; - int k; + uint k; if (m_effects.isEmpty()) - return length; + return samples; if (m_chan == 1) { - for (k = 0; k < length >> 1; ++k) - m_left[k] = (LADSPA_Data) raw16[k] / 32768.0f; + memcpy(m_left, data, samples * sizeof(float)); + foreach(instance, m_effects) { if (instance->handle) - instance->descriptor->run(instance->handle, length >> 1); + instance->descriptor->run(instance->handle, samples); } - for (k = 0; k < length >> 1; ++k) - raw16[k] = qBound((int)(m_left[k] * 32768.0f), -32768, 32767); + for (k = 0; k < samples; ++k) + data[k] = qBound(-1.0f, m_left[k], 1.0f); } else { - for (k = 0; k < length >> 1; k += 2) + for (k = 0; k < samples; k += 2) { - m_left[k >> 1] = (LADSPA_Data) raw16[k] / 32768.0f; - m_right[k >> 1] = (LADSPA_Data) raw16[k+1] / 32768.0f; + m_left[k >> 1] = data[k]; + m_right[k >> 1] = data[k+1]; } foreach(instance, m_effects) { if (instance->handle) - instance->descriptor->run(instance->handle, length >> 2); + instance->descriptor->run(instance->handle, samples >> 1); if (instance->handle2) - instance->descriptor->run(instance->handle2, length >> 2); + instance->descriptor->run(instance->handle2, samples >> 1); } - for (k = 0; k < length >> 1; k += 2) + for (k = 0; k < samples; k+=2) { - raw16[k] = qBound((int)(m_left[k >> 1] * 32768.0f), -32768, 32767); - raw16[k+1] = qBound((int)(m_right[k >> 1] * 32768.0f), -32768, 32767); + data[k] = qBound(-1.0f, m_left[k >> 1], 1.0f); + data[k+1] = qBound(-1.0f, m_right[k>> 1], 1.0f); } } - return length; + return samples; } void LADSPAHost::portAssign(LADSPAEffect *instance) diff --git a/src/plugins/Effect/ladspa/ladspahost.h b/src/plugins/Effect/ladspa/ladspahost.h index b296fce38..df83c8083 100644 --- a/src/plugins/Effect/ladspa/ladspahost.h +++ b/src/plugins/Effect/ladspa/ladspahost.h @@ -1,7 +1,7 @@ /*************************************************************************** * Copyright (C) 2002,2003 Nick Lamb <njl195@zepler.org.uk> * * Copyright (C) 2005 Giacomo Lozito <city_hunter@users.sf.net> * - * Copyright (C) 2009 by Ilya Kotov <forkotov02@hotmail.ru> * + * Copyright (C) 2009-2015 by Ilya Kotov <forkotov02@hotmail.ru> * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * @@ -24,6 +24,7 @@ #include <QMutex> #include <QList> #include <QObject> +#include <stddef.h> #include <qmmp/qmmp.h> #include "ladspa.h" @@ -84,8 +85,8 @@ public: virtual ~LADSPAHost(); - int applyEffect(qint16 *d, int length); - void configure(quint32 freq, int chan, Qmmp::AudioFormat format); + int applyEffect(float *data, size_t samples); + void configure(quint32 freq, int chan); QList <LADSPAPlugin *> plugins(); QList <LADSPAEffect *> effects(); LADSPAEffect *addPlugin(LADSPAPlugin * plugin); @@ -106,7 +107,7 @@ private: LADSPA_Data m_left[MAX_SAMPLES], m_right[MAX_SAMPLES], m_trash[MAX_SAMPLES]; static LADSPAHost *m_instance; - int m_chan, m_prec; + int m_chan; quint32 m_freq; }; |
