diff options
author | Arystanbek Dyussenov <arystan.d@gmail.com> | 2010-09-04 22:49:07 +0400 |
---|---|---|
committer | Arystanbek Dyussenov <arystan.d@gmail.com> | 2010-09-04 22:49:07 +0400 |
commit | 90b464d3728d9ed8ec26fdf59058d236b99dbcd9 (patch) | |
tree | e88cab4fb1358e962b19f658064ca8c9f8d29f5b /intern/audaspace/FX/AUD_AccumulatorFactory.cpp | |
parent | 08d02dd04d836976b25793bb1d4c6a86b3f924c7 (diff) | |
parent | b0b787ef38f9947b3176642556f5282eb3518f69 (diff) |
COLLADA branch: merge from trunk -r 28015:31610.soc-2009-chingachgook
Diffstat (limited to 'intern/audaspace/FX/AUD_AccumulatorFactory.cpp')
-rw-r--r-- | intern/audaspace/FX/AUD_AccumulatorFactory.cpp | 43 |
1 files changed, 27 insertions, 16 deletions
diff --git a/intern/audaspace/FX/AUD_AccumulatorFactory.cpp b/intern/audaspace/FX/AUD_AccumulatorFactory.cpp index 20709c57ee5..0c51e5241e4 100644 --- a/intern/audaspace/FX/AUD_AccumulatorFactory.cpp +++ b/intern/audaspace/FX/AUD_AccumulatorFactory.cpp @@ -24,26 +24,37 @@ */ #include "AUD_AccumulatorFactory.h" -#include "AUD_AccumulatorReader.h" +#include "AUD_CallbackIIRFilterReader.h" + +sample_t accumulatorFilterAdditive(AUD_CallbackIIRFilterReader* reader, void* useless) +{ + float in = reader->x(0); + float lastin = reader->x(-1); + float out = reader->y(-1) + in - lastin; + if(in > lastin) + out += in - lastin; + return out; +} + +sample_t accumulatorFilter(AUD_CallbackIIRFilterReader* reader, void* useless) +{ + float in = reader->x(0); + float lastin = reader->x(-1); + float out = reader->y(-1); + if(in > lastin) + out += in - lastin; + return out; +} AUD_AccumulatorFactory::AUD_AccumulatorFactory(AUD_IFactory* factory, bool additive) : AUD_EffectFactory(factory), - m_additive(additive) {} - -AUD_AccumulatorFactory::AUD_AccumulatorFactory(bool additive) : - AUD_EffectFactory(0), - m_additive(additive) {} - -AUD_IReader* AUD_AccumulatorFactory::createReader() + m_additive(additive) { - AUD_IReader* reader = getReader(); - - if(reader != 0) - { - reader = new AUD_AccumulatorReader(reader, m_additive); - AUD_NEW("reader") - } +} - return reader; +AUD_IReader* AUD_AccumulatorFactory::createReader() const +{ + return new AUD_CallbackIIRFilterReader(getReader(), 2, 2, + m_additive ? accumulatorFilterAdditive : accumulatorFilter); } |