aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Effect/bs2b
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2010-01-16 15:33:17 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2010-01-16 15:33:17 +0000
commit435f1da1de18bafe57e43e47fd8a6fc69fd8bab7 (patch)
treee332293971b3b3883685b79c62bcd50bf2f49c12 /src/plugins/Effect/bs2b
parent2fa169a585994ceb40db55405f46783d06820947 (diff)
downloadqmmp-435f1da1de18bafe57e43e47fd8a6fc69fd8bab7.tar.gz
qmmp-435f1da1de18bafe57e43e47fd8a6fc69fd8bab7.tar.bz2
qmmp-435f1da1de18bafe57e43e47fd8a6fc69fd8bab7.zip
updated audio engine
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@1503 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Effect/bs2b')
-rw-r--r--src/plugins/Effect/bs2b/bs2bplugin.cpp29
-rw-r--r--src/plugins/Effect/bs2b/bs2bplugin.h7
2 files changed, 18 insertions, 18 deletions
diff --git a/src/plugins/Effect/bs2b/bs2bplugin.cpp b/src/plugins/Effect/bs2b/bs2bplugin.cpp
index d2ced9bb9..b9f0bda94 100644
--- a/src/plugins/Effect/bs2b/bs2bplugin.cpp
+++ b/src/plugins/Effect/bs2b/bs2bplugin.cpp
@@ -32,6 +32,7 @@ Bs2bPlugin::Bs2bPlugin() : Effect()
m_bs2b_handler = bs2b_open();
QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
bs2b_set_level(m_bs2b_handler, settings.value("bs2b/level", BS2B_DEFAULT_CLEVEL).toUInt());
+ m_chan = 0;
}
Bs2bPlugin::~Bs2bPlugin()
@@ -43,35 +44,33 @@ Bs2bPlugin::~Bs2bPlugin()
#define CASE_BS2B(bitsPerSample, dataType, functionToCall, samples, out_data) \
case bitsPerSample: \
{ \
- dataType * data = reinterpret_cast<dataType *>(*out_data); \
+ dataType * data = reinterpret_cast<dataType *>(out_data); \
functionToCall(m_bs2b_handler, data, samples); \
} \
break;
-ulong Bs2bPlugin::process(char *in_data, const ulong size, char **out_data)
+void Bs2bPlugin::applyEffect(Buffer *b)
{
- memcpy(*out_data, in_data, size);
- if (channels() != 2)
- return size;
-
- uint samples = size / (bitsPerSample() / 8) / 2;
+ if(m_chan != 2)
+ return;
+ uint samples = b->nbytes / audioParameters().sampleSize() / 2;
m_mutex.lock();
- switch (bitsPerSample())
+ switch (format())
{
- 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)
+ CASE_BS2B(Qmmp::PCM_S8, int8_t, bs2b_cross_feed_s8, samples, b->data)
+ CASE_BS2B(Qmmp::PCM_S16LE, int16_t, bs2b_cross_feed_s16le, samples, b->data)
+ //CASE_BS2B(Qmmp::PCM_S24LE, bs2b_int24_t, bs2b_cross_feed_s24le, samples, out_data)
+ CASE_BS2B(Qmmp::PCM_S32LE, int32_t, bs2b_cross_feed_s32le, samples, b->data)
default:
; // noop
}
m_mutex.unlock();
- return size;
}
-void Bs2bPlugin::configure(quint32 freq, int chan, int res)
+void Bs2bPlugin::configure(quint32 freq, int chan, Qmmp::AudioFormat format)
{
- Effect::configure(freq, chan, res);
+ m_chan = chan;
+ Effect::configure(freq, chan, format);
bs2b_set_srate(m_bs2b_handler,freq);
}
diff --git a/src/plugins/Effect/bs2b/bs2bplugin.h b/src/plugins/Effect/bs2b/bs2bplugin.h
index 93ad482bb..0070d0f6e 100644
--- a/src/plugins/Effect/bs2b/bs2bplugin.h
+++ b/src/plugins/Effect/bs2b/bs2bplugin.h
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2009 by Ilya Kotov *
+ * Copyright (C) 2010 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -35,13 +35,14 @@ public:
virtual ~Bs2bPlugin();
- ulong process(char *in_data, const ulong size, char **out_data);
- void configure(quint32 freq, int chan, int res);
+ void applyEffect(Buffer *b);
+ void configure(quint32 freq, int chan, Qmmp::AudioFormat format);
void setCrossfeedLevel(uint32_t level);
static Bs2bPlugin* instance();
private:
t_bs2bdp m_bs2b_handler;
+ int m_chan;
QMutex m_mutex;
static Bs2bPlugin *m_instance;
};