diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2009-02-28 11:05:43 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2009-02-28 11:05:43 +0000 |
| commit | 41f66e32ed817ac2da74f5d0e319fda6b02a6242 (patch) | |
| tree | 31c8b2f96e8a2868787139429b6f3e51ac06ffd8 /src/plugins/Effect/bs2b/bs2bplugin.cpp | |
| parent | ce3cede8e1a681db0ad13477881058f6c3c5a6c6 (diff) | |
| download | qmmp-41f66e32ed817ac2da74f5d0e319fda6b02a6242.tar.gz qmmp-41f66e32ed817ac2da74f5d0e319fda6b02a6242.tar.bz2 qmmp-41f66e32ed817ac2da74f5d0e319fda6b02a6242.zip | |
updated bs2b plugin. Now it uses updated bs2b library and enabled by default
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@810 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Effect/bs2b/bs2bplugin.cpp')
| -rw-r--r-- | src/plugins/Effect/bs2b/bs2bplugin.cpp | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/src/plugins/Effect/bs2b/bs2bplugin.cpp b/src/plugins/Effect/bs2b/bs2bplugin.cpp new file mode 100644 index 000000000..59a9faad2 --- /dev/null +++ b/src/plugins/Effect/bs2b/bs2bplugin.cpp @@ -0,0 +1,73 @@ +/*************************************************************************** + * Copyright (C) 2009 by Ilya Kotov <forkotov02@hotmail.ru> * + * Copyright (C) 2009 by Sebastian Pipping <sebastian@pipping.org> * + * * + * 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 * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#include <QSettings> +#include <math.h> +#include <stdlib.h> +#include <qmmp/qmmp.h> +#include "bs2bplugin.h" + +Bs2bPlugin::Bs2bPlugin(QObject* parent) : Effect(parent) +{ + 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()); +} + +Bs2bPlugin::~Bs2bPlugin() +{ + bs2b_clear(m_bs2b_handler); +} + +#define CASE_BS2B(bitsPerSample, dataType, functionToCall, samples, out_data) \ + case bitsPerSample: \ + { \ + dataType * data = reinterpret_cast<dataType *>(*out_data); \ + while (samples--) { \ + functionToCall(m_bs2b_handler, data); \ + data += 2; \ + } \ + } \ + break; + +ulong Bs2bPlugin::process(char *in_data, const ulong size, char **out_data) +{ + memcpy(*out_data, in_data, size); + if (channels() != 2) + return size; + + uint samples = size / (bitsPerSample() / 8) / 2; + switch (bitsPerSample()) + { + 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) + default: + ; // noop + } + return size; +} + +void Bs2bPlugin::configure(quint32 freq, int chan, int res) +{ + Effect::configure(freq, chan, res); + bs2b_set_srate(m_bs2b_handler,freq); + bs2b_set_level(m_bs2b_handler, BS2B_DEFAULT_CLEVEL); +} |
