From d1c542ce0551f6ec3408b7c6689ad17b0a14e8d2 Mon Sep 17 00:00:00 2001 From: Joerg Mueller Date: Fri, 3 Jun 2011 23:28:57 +0000 Subject: 3D Audio GSoC: Memory management improvements. --- intern/audaspace/FX/AUD_AccumulatorFactory.cpp | 4 ++-- intern/audaspace/FX/AUD_AccumulatorFactory.h | 4 ++-- intern/audaspace/FX/AUD_BaseIIRFilterReader.cpp | 2 +- intern/audaspace/FX/AUD_BaseIIRFilterReader.h | 2 +- intern/audaspace/FX/AUD_ButterworthFactory.cpp | 6 +++--- intern/audaspace/FX/AUD_ButterworthFactory.h | 4 ++-- .../audaspace/FX/AUD_CallbackIIRFilterReader.cpp | 2 +- intern/audaspace/FX/AUD_CallbackIIRFilterReader.h | 2 +- intern/audaspace/FX/AUD_DelayFactory.cpp | 4 ++-- intern/audaspace/FX/AUD_DelayFactory.h | 4 ++-- intern/audaspace/FX/AUD_DelayReader.cpp | 2 +- intern/audaspace/FX/AUD_DelayReader.h | 2 +- intern/audaspace/FX/AUD_DoubleFactory.cpp | 18 ++++------------ intern/audaspace/FX/AUD_DoubleFactory.h | 8 ++++---- intern/audaspace/FX/AUD_DoubleReader.cpp | 8 ++------ intern/audaspace/FX/AUD_DoubleReader.h | 7 ++++--- intern/audaspace/FX/AUD_EffectFactory.cpp | 4 ++-- intern/audaspace/FX/AUD_EffectFactory.h | 8 ++++---- intern/audaspace/FX/AUD_EffectReader.cpp | 3 +-- intern/audaspace/FX/AUD_EffectReader.h | 5 +++-- intern/audaspace/FX/AUD_EnvelopeFactory.cpp | 6 +++--- intern/audaspace/FX/AUD_EnvelopeFactory.h | 4 ++-- intern/audaspace/FX/AUD_FaderFactory.cpp | 4 ++-- intern/audaspace/FX/AUD_FaderFactory.h | 4 ++-- intern/audaspace/FX/AUD_FaderReader.cpp | 2 +- intern/audaspace/FX/AUD_FaderReader.h | 2 +- intern/audaspace/FX/AUD_HighpassFactory.cpp | 6 +++--- intern/audaspace/FX/AUD_HighpassFactory.h | 4 ++-- intern/audaspace/FX/AUD_IIRFilterFactory.cpp | 4 ++-- intern/audaspace/FX/AUD_IIRFilterFactory.h | 4 ++-- intern/audaspace/FX/AUD_IIRFilterReader.cpp | 2 +- intern/audaspace/FX/AUD_IIRFilterReader.h | 2 +- intern/audaspace/FX/AUD_LimiterFactory.cpp | 4 ++-- intern/audaspace/FX/AUD_LimiterFactory.h | 4 ++-- intern/audaspace/FX/AUD_LimiterReader.cpp | 2 +- intern/audaspace/FX/AUD_LimiterReader.h | 2 +- intern/audaspace/FX/AUD_LoopFactory.cpp | 4 ++-- intern/audaspace/FX/AUD_LoopFactory.h | 4 ++-- intern/audaspace/FX/AUD_LoopReader.cpp | 2 +- intern/audaspace/FX/AUD_LoopReader.h | 2 +- intern/audaspace/FX/AUD_LowpassFactory.cpp | 6 +++--- intern/audaspace/FX/AUD_LowpassFactory.h | 4 ++-- intern/audaspace/FX/AUD_PingPongFactory.cpp | 18 ++++------------ intern/audaspace/FX/AUD_PingPongFactory.h | 4 ++-- intern/audaspace/FX/AUD_PitchFactory.cpp | 4 ++-- intern/audaspace/FX/AUD_PitchFactory.h | 4 ++-- intern/audaspace/FX/AUD_PitchReader.cpp | 2 +- intern/audaspace/FX/AUD_PitchReader.h | 2 +- intern/audaspace/FX/AUD_RectifyFactory.cpp | 4 ++-- intern/audaspace/FX/AUD_RectifyFactory.h | 4 ++-- intern/audaspace/FX/AUD_ReverseFactory.cpp | 4 ++-- intern/audaspace/FX/AUD_ReverseFactory.h | 4 ++-- intern/audaspace/FX/AUD_ReverseReader.cpp | 2 +- intern/audaspace/FX/AUD_ReverseReader.h | 2 +- intern/audaspace/FX/AUD_SquareFactory.cpp | 4 ++-- intern/audaspace/FX/AUD_SquareFactory.h | 4 ++-- intern/audaspace/FX/AUD_SumFactory.cpp | 4 ++-- intern/audaspace/FX/AUD_SumFactory.h | 4 ++-- intern/audaspace/FX/AUD_SuperposeFactory.cpp | 17 ++++----------- intern/audaspace/FX/AUD_SuperposeFactory.h | 8 ++++---- intern/audaspace/FX/AUD_SuperposeReader.cpp | 24 ++++++---------------- intern/audaspace/FX/AUD_SuperposeReader.h | 7 ++++--- intern/audaspace/FX/AUD_VolumeFactory.cpp | 4 ++-- intern/audaspace/FX/AUD_VolumeFactory.h | 4 ++-- 64 files changed, 134 insertions(+), 177 deletions(-) (limited to 'intern/audaspace/FX') diff --git a/intern/audaspace/FX/AUD_AccumulatorFactory.cpp b/intern/audaspace/FX/AUD_AccumulatorFactory.cpp index d60924958b1..207c2ee502b 100644 --- a/intern/audaspace/FX/AUD_AccumulatorFactory.cpp +++ b/intern/audaspace/FX/AUD_AccumulatorFactory.cpp @@ -52,14 +52,14 @@ sample_t accumulatorFilter(AUD_CallbackIIRFilterReader* reader, void* useless) return out; } -AUD_AccumulatorFactory::AUD_AccumulatorFactory(AUD_IFactory* factory, +AUD_AccumulatorFactory::AUD_AccumulatorFactory(AUD_Reference factory, bool additive) : AUD_EffectFactory(factory), m_additive(additive) { } -AUD_IReader* AUD_AccumulatorFactory::createReader() const +AUD_Reference AUD_AccumulatorFactory::createReader() const { return new AUD_CallbackIIRFilterReader(getReader(), 2, 2, m_additive ? accumulatorFilterAdditive : accumulatorFilter); diff --git a/intern/audaspace/FX/AUD_AccumulatorFactory.h b/intern/audaspace/FX/AUD_AccumulatorFactory.h index 3c3b32ce071..becd5d9aaee 100644 --- a/intern/audaspace/FX/AUD_AccumulatorFactory.h +++ b/intern/audaspace/FX/AUD_AccumulatorFactory.h @@ -55,9 +55,9 @@ public: * \param factory The input factory. * \param additive Whether the accumulator is additive. */ - AUD_AccumulatorFactory(AUD_IFactory* factory, bool additive = false); + AUD_AccumulatorFactory(AUD_Reference factory, bool additive = false); - virtual AUD_IReader* createReader() const; + virtual AUD_Reference createReader() const; }; #endif //AUD_ACCUMULATORFACTORY diff --git a/intern/audaspace/FX/AUD_BaseIIRFilterReader.cpp b/intern/audaspace/FX/AUD_BaseIIRFilterReader.cpp index 563722d9213..5ad5903141b 100644 --- a/intern/audaspace/FX/AUD_BaseIIRFilterReader.cpp +++ b/intern/audaspace/FX/AUD_BaseIIRFilterReader.cpp @@ -35,7 +35,7 @@ #define CC m_channels + m_channel -AUD_BaseIIRFilterReader::AUD_BaseIIRFilterReader(AUD_IReader* reader, int in, +AUD_BaseIIRFilterReader::AUD_BaseIIRFilterReader(AUD_Reference reader, int in, int out) : AUD_EffectReader(reader), m_channels(reader->getSpecs().channels), diff --git a/intern/audaspace/FX/AUD_BaseIIRFilterReader.h b/intern/audaspace/FX/AUD_BaseIIRFilterReader.h index 436e6469a58..9f81e2d8a25 100644 --- a/intern/audaspace/FX/AUD_BaseIIRFilterReader.h +++ b/intern/audaspace/FX/AUD_BaseIIRFilterReader.h @@ -97,7 +97,7 @@ protected: * \param in The count of past input samples needed. * \param out The count of past output samples needed. */ - AUD_BaseIIRFilterReader(AUD_IReader* reader, int in, int out); + AUD_BaseIIRFilterReader(AUD_Reference reader, int in, int out); public: inline sample_t x(int pos) diff --git a/intern/audaspace/FX/AUD_ButterworthFactory.cpp b/intern/audaspace/FX/AUD_ButterworthFactory.cpp index ea957c81ed3..1161a485fb1 100644 --- a/intern/audaspace/FX/AUD_ButterworthFactory.cpp +++ b/intern/audaspace/FX/AUD_ButterworthFactory.cpp @@ -41,16 +41,16 @@ #define BWPB41 0.76536686473 #define BWPB42 1.84775906502 -AUD_ButterworthFactory::AUD_ButterworthFactory(AUD_IFactory* factory, +AUD_ButterworthFactory::AUD_ButterworthFactory(AUD_Reference factory, float frequency) : AUD_EffectFactory(factory), m_frequency(frequency) { } -AUD_IReader* AUD_ButterworthFactory::createReader() const +AUD_Reference AUD_ButterworthFactory::createReader() const { - AUD_IReader* reader = getReader(); + AUD_Reference reader = getReader(); // calculate coefficients float omega = 2 * tan(m_frequency * M_PI / reader->getSpecs().rate); diff --git a/intern/audaspace/FX/AUD_ButterworthFactory.h b/intern/audaspace/FX/AUD_ButterworthFactory.h index c8b731449c4..c211a6df246 100644 --- a/intern/audaspace/FX/AUD_ButterworthFactory.h +++ b/intern/audaspace/FX/AUD_ButterworthFactory.h @@ -55,9 +55,9 @@ public: * \param factory The input factory. * \param frequency The cutoff frequency. */ - AUD_ButterworthFactory(AUD_IFactory* factory, float frequency); + AUD_ButterworthFactory(AUD_Reference factory, float frequency); - virtual AUD_IReader* createReader() const; + virtual AUD_Reference createReader() const; }; #endif //AUD_BUTTERWORTHFACTORY diff --git a/intern/audaspace/FX/AUD_CallbackIIRFilterReader.cpp b/intern/audaspace/FX/AUD_CallbackIIRFilterReader.cpp index 2f9bb7762a0..e6c83322435 100644 --- a/intern/audaspace/FX/AUD_CallbackIIRFilterReader.cpp +++ b/intern/audaspace/FX/AUD_CallbackIIRFilterReader.cpp @@ -31,7 +31,7 @@ #include "AUD_CallbackIIRFilterReader.h" -AUD_CallbackIIRFilterReader::AUD_CallbackIIRFilterReader(AUD_IReader* reader, +AUD_CallbackIIRFilterReader::AUD_CallbackIIRFilterReader(AUD_Reference reader, int in, int out, doFilterIIR doFilter, endFilterIIR endFilter, diff --git a/intern/audaspace/FX/AUD_CallbackIIRFilterReader.h b/intern/audaspace/FX/AUD_CallbackIIRFilterReader.h index a969db7297e..6d53edeecc2 100644 --- a/intern/audaspace/FX/AUD_CallbackIIRFilterReader.h +++ b/intern/audaspace/FX/AUD_CallbackIIRFilterReader.h @@ -76,7 +76,7 @@ public: * \param endFilter The finishing callback. * \param data Data pointer for the callbacks. */ - AUD_CallbackIIRFilterReader(AUD_IReader* reader, int in, int out, + AUD_CallbackIIRFilterReader(AUD_Reference reader, int in, int out, doFilterIIR doFilter, endFilterIIR endFilter = 0, void* data = 0); diff --git a/intern/audaspace/FX/AUD_DelayFactory.cpp b/intern/audaspace/FX/AUD_DelayFactory.cpp index 1d2d99adc03..ceecd7a63c9 100644 --- a/intern/audaspace/FX/AUD_DelayFactory.cpp +++ b/intern/audaspace/FX/AUD_DelayFactory.cpp @@ -33,7 +33,7 @@ #include "AUD_DelayReader.h" #include "AUD_Space.h" -AUD_DelayFactory::AUD_DelayFactory(AUD_IFactory* factory, float delay) : +AUD_DelayFactory::AUD_DelayFactory(AUD_Reference factory, float delay) : AUD_EffectFactory(factory), m_delay(delay) { @@ -44,7 +44,7 @@ float AUD_DelayFactory::getDelay() const return m_delay; } -AUD_IReader* AUD_DelayFactory::createReader() const +AUD_Reference AUD_DelayFactory::createReader() const { return new AUD_DelayReader(getReader(), m_delay); } diff --git a/intern/audaspace/FX/AUD_DelayFactory.h b/intern/audaspace/FX/AUD_DelayFactory.h index 1e67cd68990..6362bd19a70 100644 --- a/intern/audaspace/FX/AUD_DelayFactory.h +++ b/intern/audaspace/FX/AUD_DelayFactory.h @@ -55,14 +55,14 @@ public: * \param factory The input factory. * \param delay The desired delay in seconds. */ - AUD_DelayFactory(AUD_IFactory* factory, float delay = 0); + AUD_DelayFactory(AUD_Reference factory, float delay = 0); /** * Returns the delay in seconds. */ float getDelay() const; - virtual AUD_IReader* createReader() const; + virtual AUD_Reference createReader() const; }; #endif //AUD_DELAYFACTORY diff --git a/intern/audaspace/FX/AUD_DelayReader.cpp b/intern/audaspace/FX/AUD_DelayReader.cpp index 374b876455d..a2224caf288 100644 --- a/intern/audaspace/FX/AUD_DelayReader.cpp +++ b/intern/audaspace/FX/AUD_DelayReader.cpp @@ -33,7 +33,7 @@ #include -AUD_DelayReader::AUD_DelayReader(AUD_IReader* reader, float delay) : +AUD_DelayReader::AUD_DelayReader(AUD_Reference reader, float delay) : AUD_EffectReader(reader), m_delay(int(delay * reader->getSpecs().rate)), m_remdelay(int(delay * reader->getSpecs().rate)), diff --git a/intern/audaspace/FX/AUD_DelayReader.h b/intern/audaspace/FX/AUD_DelayReader.h index 5f0af660bdf..695003a8c43 100644 --- a/intern/audaspace/FX/AUD_DelayReader.h +++ b/intern/audaspace/FX/AUD_DelayReader.h @@ -71,7 +71,7 @@ public: * \param reader The reader to read from. * \param delay The delay in seconds. */ - AUD_DelayReader(AUD_IReader* reader, float delay); + AUD_DelayReader(AUD_Reference reader, float delay); virtual void seek(int position); virtual int getLength() const; diff --git a/intern/audaspace/FX/AUD_DoubleFactory.cpp b/intern/audaspace/FX/AUD_DoubleFactory.cpp index 7a40f1f8c96..5b72082f520 100644 --- a/intern/audaspace/FX/AUD_DoubleFactory.cpp +++ b/intern/audaspace/FX/AUD_DoubleFactory.cpp @@ -32,25 +32,15 @@ #include "AUD_DoubleFactory.h" #include "AUD_DoubleReader.h" -AUD_DoubleFactory::AUD_DoubleFactory(AUD_IFactory* factory1, AUD_IFactory* factory2) : +AUD_DoubleFactory::AUD_DoubleFactory(AUD_Reference factory1, AUD_Reference factory2) : m_factory1(factory1), m_factory2(factory2) { } -AUD_IReader* AUD_DoubleFactory::createReader() const +AUD_Reference AUD_DoubleFactory::createReader() const { - AUD_IReader* reader1 = m_factory1->createReader(); - AUD_IReader* reader2; - - try - { - reader2 = m_factory2->createReader(); - } - catch(AUD_Exception&) - { - delete reader1; - throw; - } + AUD_Reference reader1 = m_factory1->createReader(); + AUD_Reference reader2 = m_factory2->createReader(); return new AUD_DoubleReader(reader1, reader2); } diff --git a/intern/audaspace/FX/AUD_DoubleFactory.h b/intern/audaspace/FX/AUD_DoubleFactory.h index 52a299c7157..acc9997deea 100644 --- a/intern/audaspace/FX/AUD_DoubleFactory.h +++ b/intern/audaspace/FX/AUD_DoubleFactory.h @@ -44,12 +44,12 @@ private: /** * First played factory. */ - AUD_IFactory* m_factory1; + AUD_Reference m_factory1; /** * Second played factory. */ - AUD_IFactory* m_factory2; + AUD_Reference m_factory2; // hide copy constructor and operator= AUD_DoubleFactory(const AUD_DoubleFactory&); @@ -61,9 +61,9 @@ public: * \param factory1 The first input factory. * \param factory2 The second input factory. */ - AUD_DoubleFactory(AUD_IFactory* factory1, AUD_IFactory* factory2); + AUD_DoubleFactory(AUD_Reference factory1, AUD_Reference factory2); - virtual AUD_IReader* createReader() const; + virtual AUD_Reference createReader() const; }; #endif //AUD_DOUBLEFACTORY diff --git a/intern/audaspace/FX/AUD_DoubleReader.cpp b/intern/audaspace/FX/AUD_DoubleReader.cpp index 113bed14ce3..bf1c770a2ed 100644 --- a/intern/audaspace/FX/AUD_DoubleReader.cpp +++ b/intern/audaspace/FX/AUD_DoubleReader.cpp @@ -36,8 +36,8 @@ static const char* specs_error = "AUD_DoubleReader: Both readers have to have " "the same specs."; -AUD_DoubleReader::AUD_DoubleReader(AUD_IReader* reader1, - AUD_IReader* reader2) : +AUD_DoubleReader::AUD_DoubleReader(AUD_Reference reader1, + AUD_Reference reader2) : m_reader1(reader1), m_reader2(reader2), m_finished1(false) { AUD_Specs s1, s2; @@ -45,16 +45,12 @@ AUD_DoubleReader::AUD_DoubleReader(AUD_IReader* reader1, s2 = reader2->getSpecs(); if(memcmp(&s1, &s2, sizeof(AUD_Specs)) != 0) { - delete reader1; - delete reader2; AUD_THROW(AUD_ERROR_SPECS, specs_error); } } AUD_DoubleReader::~AUD_DoubleReader() { - delete m_reader1; - delete m_reader2; } bool AUD_DoubleReader::isSeekable() const diff --git a/intern/audaspace/FX/AUD_DoubleReader.h b/intern/audaspace/FX/AUD_DoubleReader.h index 7b3b812ef80..4f01c47d052 100644 --- a/intern/audaspace/FX/AUD_DoubleReader.h +++ b/intern/audaspace/FX/AUD_DoubleReader.h @@ -34,6 +34,7 @@ #include "AUD_IReader.h" #include "AUD_Buffer.h" +#include "AUD_Reference.h" /** * This reader plays two readers with the same specs sequently. @@ -44,12 +45,12 @@ private: /** * The first reader. */ - AUD_IReader* m_reader1; + AUD_Reference m_reader1; /** * The second reader. */ - AUD_IReader* m_reader2; + AUD_Reference m_reader2; /** * Whether we've reached the end of the first reader. @@ -72,7 +73,7 @@ public: * \param reader2 The second reader to read from. * \exception AUD_Exception Thrown if the specs from the readers differ. */ - AUD_DoubleReader(AUD_IReader* reader1, AUD_IReader* reader2); + AUD_DoubleReader(AUD_Reference reader1, AUD_Reference reader2); /** * Destroys the reader. diff --git a/intern/audaspace/FX/AUD_EffectFactory.cpp b/intern/audaspace/FX/AUD_EffectFactory.cpp index a0d9256e691..6173ffb5a97 100644 --- a/intern/audaspace/FX/AUD_EffectFactory.cpp +++ b/intern/audaspace/FX/AUD_EffectFactory.cpp @@ -32,7 +32,7 @@ #include "AUD_EffectFactory.h" #include "AUD_IReader.h" -AUD_EffectFactory::AUD_EffectFactory(AUD_IFactory* factory) +AUD_EffectFactory::AUD_EffectFactory(AUD_Reference factory) { m_factory = factory; } @@ -41,7 +41,7 @@ AUD_EffectFactory::~AUD_EffectFactory() { } -AUD_IFactory* AUD_EffectFactory::getFactory() const +AUD_Reference AUD_EffectFactory::getFactory() const { return m_factory; } diff --git a/intern/audaspace/FX/AUD_EffectFactory.h b/intern/audaspace/FX/AUD_EffectFactory.h index a6a28eea577..72fdb3f0833 100644 --- a/intern/audaspace/FX/AUD_EffectFactory.h +++ b/intern/audaspace/FX/AUD_EffectFactory.h @@ -49,7 +49,7 @@ protected: /** * If there is no reader it is created out of this factory. */ - AUD_IFactory* m_factory; + AUD_Reference m_factory; /** * Returns the reader created out of the factory. @@ -57,7 +57,7 @@ protected: * classes. * \return The reader created out of the factory. */ - inline AUD_IReader* getReader() const + inline AUD_Reference getReader() const { return m_factory->createReader(); } @@ -67,7 +67,7 @@ public: * Creates a new factory. * \param factory The input factory. */ - AUD_EffectFactory(AUD_IFactory* factory); + AUD_EffectFactory(AUD_Reference factory); /** * Destroys the factory. @@ -78,7 +78,7 @@ public: * Returns the saved factory. * \return The factory or NULL if there has no factory been saved. */ - AUD_IFactory* getFactory() const; + AUD_Reference getFactory() const; }; #endif //AUD_EFFECTFACTORY diff --git a/intern/audaspace/FX/AUD_EffectReader.cpp b/intern/audaspace/FX/AUD_EffectReader.cpp index 3ad9f67bfd6..d7c4eeb2ee1 100644 --- a/intern/audaspace/FX/AUD_EffectReader.cpp +++ b/intern/audaspace/FX/AUD_EffectReader.cpp @@ -31,14 +31,13 @@ #include "AUD_EffectReader.h" -AUD_EffectReader::AUD_EffectReader(AUD_IReader* reader) +AUD_EffectReader::AUD_EffectReader(AUD_Reference reader) { m_reader = reader; } AUD_EffectReader::~AUD_EffectReader() { - delete m_reader; } bool AUD_EffectReader::isSeekable() const diff --git a/intern/audaspace/FX/AUD_EffectReader.h b/intern/audaspace/FX/AUD_EffectReader.h index fb8066f36d8..6aa185edcd0 100644 --- a/intern/audaspace/FX/AUD_EffectReader.h +++ b/intern/audaspace/FX/AUD_EffectReader.h @@ -33,6 +33,7 @@ #define AUD_EFFECTREADER #include "AUD_IReader.h" +#include "AUD_Reference.h" /** * This reader is a base class for all effect readers that take one other reader @@ -49,14 +50,14 @@ protected: /** * The reader to read from. */ - AUD_IReader* m_reader; + AUD_Reference m_reader; public: /** * Creates a new effect reader. * \param reader The reader to read from. */ - AUD_EffectReader(AUD_IReader* reader); + AUD_EffectReader(AUD_Reference reader); /** * Destroys the reader. diff --git a/intern/audaspace/FX/AUD_EnvelopeFactory.cpp b/intern/audaspace/FX/AUD_EnvelopeFactory.cpp index 069317d1c8b..e36091950a5 100644 --- a/intern/audaspace/FX/AUD_EnvelopeFactory.cpp +++ b/intern/audaspace/FX/AUD_EnvelopeFactory.cpp @@ -56,7 +56,7 @@ void endEnvelopeFilter(EnvelopeParameters* param) delete param; } -AUD_EnvelopeFactory::AUD_EnvelopeFactory(AUD_IFactory* factory, float attack, +AUD_EnvelopeFactory::AUD_EnvelopeFactory(AUD_Reference factory, float attack, float release, float threshold, float arthreshold) : AUD_EffectFactory(factory), @@ -67,9 +67,9 @@ AUD_EnvelopeFactory::AUD_EnvelopeFactory(AUD_IFactory* factory, float attack, { } -AUD_IReader* AUD_EnvelopeFactory::createReader() const +AUD_Reference AUD_EnvelopeFactory::createReader() const { - AUD_IReader* reader = getReader(); + AUD_Reference reader = getReader(); EnvelopeParameters* param = new EnvelopeParameters(); param->arthreshold = m_arthreshold; diff --git a/intern/audaspace/FX/AUD_EnvelopeFactory.h b/intern/audaspace/FX/AUD_EnvelopeFactory.h index 45ee811b6e0..0a803f77aaf 100644 --- a/intern/audaspace/FX/AUD_EnvelopeFactory.h +++ b/intern/audaspace/FX/AUD_EnvelopeFactory.h @@ -73,10 +73,10 @@ public: * \param threshold The threshold value. * \param arthreshold The attack/release threshold value. */ - AUD_EnvelopeFactory(AUD_IFactory* factory, float attack, float release, + AUD_EnvelopeFactory(AUD_Reference factory, float attack, float release, float threshold, float arthreshold); - virtual AUD_IReader* createReader() const; + virtual AUD_Reference createReader() const; }; #endif //AUD_ENVELOPEFACTORY diff --git a/intern/audaspace/FX/AUD_FaderFactory.cpp b/intern/audaspace/FX/AUD_FaderFactory.cpp index d887e9e68d9..e7fe5098d76 100644 --- a/intern/audaspace/FX/AUD_FaderFactory.cpp +++ b/intern/audaspace/FX/AUD_FaderFactory.cpp @@ -32,7 +32,7 @@ #include "AUD_FaderFactory.h" #include "AUD_FaderReader.h" -AUD_FaderFactory::AUD_FaderFactory(AUD_IFactory* factory, AUD_FadeType type, +AUD_FaderFactory::AUD_FaderFactory(AUD_Reference factory, AUD_FadeType type, float start, float length) : AUD_EffectFactory(factory), m_type(type), @@ -56,7 +56,7 @@ float AUD_FaderFactory::getLength() const return m_length; } -AUD_IReader* AUD_FaderFactory::createReader() const +AUD_Reference AUD_FaderFactory::createReader() const { return new AUD_FaderReader(getReader(), m_type, m_start, m_length); } diff --git a/intern/audaspace/FX/AUD_FaderFactory.h b/intern/audaspace/FX/AUD_FaderFactory.h index b85475bc534..cc20245a267 100644 --- a/intern/audaspace/FX/AUD_FaderFactory.h +++ b/intern/audaspace/FX/AUD_FaderFactory.h @@ -69,7 +69,7 @@ public: * \param start The time where fading should start in seconds. * \param length How long fading should last in seconds. */ - AUD_FaderFactory(AUD_IFactory* factory, + AUD_FaderFactory(AUD_Reference factory, AUD_FadeType type = AUD_FADE_IN, float start = 0.0f, float length = 1.0f); @@ -88,7 +88,7 @@ public: */ float getLength() const; - virtual AUD_IReader* createReader() const; + virtual AUD_Reference createReader() const; }; #endif //AUD_FADERFACTORY diff --git a/intern/audaspace/FX/AUD_FaderReader.cpp b/intern/audaspace/FX/AUD_FaderReader.cpp index 6114bb486fc..e319e205e5f 100644 --- a/intern/audaspace/FX/AUD_FaderReader.cpp +++ b/intern/audaspace/FX/AUD_FaderReader.cpp @@ -33,7 +33,7 @@ #include -AUD_FaderReader::AUD_FaderReader(AUD_IReader* reader, AUD_FadeType type, +AUD_FaderReader::AUD_FaderReader(AUD_Reference reader, AUD_FadeType type, float start,float length) : AUD_EffectReader(reader), m_type(type), diff --git a/intern/audaspace/FX/AUD_FaderReader.h b/intern/audaspace/FX/AUD_FaderReader.h index fb927192b45..b088477bce0 100644 --- a/intern/audaspace/FX/AUD_FaderReader.h +++ b/intern/audaspace/FX/AUD_FaderReader.h @@ -79,7 +79,7 @@ public: * \param start The time where fading should start in seconds. * \param length How long fading should last in seconds. */ - AUD_FaderReader(AUD_IReader* reader, AUD_FadeType type, + AUD_FaderReader(AUD_Reference reader, AUD_FadeType type, float start,float length); virtual void read(int & length, sample_t* & buffer); diff --git a/intern/audaspace/FX/AUD_HighpassFactory.cpp b/intern/audaspace/FX/AUD_HighpassFactory.cpp index 61008eea44e..b8bfa6545ac 100644 --- a/intern/audaspace/FX/AUD_HighpassFactory.cpp +++ b/intern/audaspace/FX/AUD_HighpassFactory.cpp @@ -38,7 +38,7 @@ #define M_PI 3.14159265358979323846 #endif -AUD_HighpassFactory::AUD_HighpassFactory(AUD_IFactory* factory, float frequency, +AUD_HighpassFactory::AUD_HighpassFactory(AUD_Reference factory, float frequency, float Q) : AUD_EffectFactory(factory), m_frequency(frequency), @@ -46,9 +46,9 @@ AUD_HighpassFactory::AUD_HighpassFactory(AUD_IFactory* factory, float frequency, { } -AUD_IReader* AUD_HighpassFactory::createReader() const +AUD_Reference AUD_HighpassFactory::createReader() const { - AUD_IReader* reader = getReader(); + AUD_Reference reader = getReader(); // calculate coefficients float w0 = 2 * M_PI * m_frequency / reader->getSpecs().rate; diff --git a/intern/audaspace/FX/AUD_HighpassFactory.h b/intern/audaspace/FX/AUD_HighpassFactory.h index 48f4c1baefc..0089cc2c139 100644 --- a/intern/audaspace/FX/AUD_HighpassFactory.h +++ b/intern/audaspace/FX/AUD_HighpassFactory.h @@ -61,9 +61,9 @@ public: * \param frequency The cutoff frequency. * \param Q The Q factor. */ - AUD_HighpassFactory(AUD_IFactory* factory, float frequency, float Q = 1.0f); + AUD_HighpassFactory(AUD_Reference factory, float frequency, float Q = 1.0f); - virtual AUD_IReader* createReader() const; + virtual AUD_Reference createReader() const; }; #endif //AUD_HIGHPASSFACTORY diff --git a/intern/audaspace/FX/AUD_IIRFilterFactory.cpp b/intern/audaspace/FX/AUD_IIRFilterFactory.cpp index ff90ce62739..e24a10266c9 100644 --- a/intern/audaspace/FX/AUD_IIRFilterFactory.cpp +++ b/intern/audaspace/FX/AUD_IIRFilterFactory.cpp @@ -32,14 +32,14 @@ #include "AUD_IIRFilterFactory.h" #include "AUD_IIRFilterReader.h" -AUD_IIRFilterFactory::AUD_IIRFilterFactory(AUD_IFactory* factory, +AUD_IIRFilterFactory::AUD_IIRFilterFactory(AUD_Reference factory, std::vector b, std::vector a) : AUD_EffectFactory(factory), m_a(a), m_b(b) { } -AUD_IReader* AUD_IIRFilterFactory::createReader() const +AUD_Reference AUD_IIRFilterFactory::createReader() const { return new AUD_IIRFilterReader(getReader(), m_b, m_a); } diff --git a/intern/audaspace/FX/AUD_IIRFilterFactory.h b/intern/audaspace/FX/AUD_IIRFilterFactory.h index d48ad453ee4..ffcc70a8ecb 100644 --- a/intern/audaspace/FX/AUD_IIRFilterFactory.h +++ b/intern/audaspace/FX/AUD_IIRFilterFactory.h @@ -63,10 +63,10 @@ public: * \param b The input filter coefficients. * \param a The output filter coefficients. */ - AUD_IIRFilterFactory(AUD_IFactory* factory, std::vector b, + AUD_IIRFilterFactory(AUD_Reference factory, std::vector b, std::vector a); - virtual AUD_IReader* createReader() const; + virtual AUD_Reference createReader() const; }; #endif //AUD_IIRFILTERFACTORY diff --git a/intern/audaspace/FX/AUD_IIRFilterReader.cpp b/intern/audaspace/FX/AUD_IIRFilterReader.cpp index 0d55421d2b4..80252e68ce8 100644 --- a/intern/audaspace/FX/AUD_IIRFilterReader.cpp +++ b/intern/audaspace/FX/AUD_IIRFilterReader.cpp @@ -31,7 +31,7 @@ #include "AUD_IIRFilterReader.h" -AUD_IIRFilterReader::AUD_IIRFilterReader(AUD_IReader* reader, +AUD_IIRFilterReader::AUD_IIRFilterReader(AUD_Reference reader, std::vector b, std::vector a) : AUD_BaseIIRFilterReader(reader, b.size(), a.size()), m_a(a), m_b(b) diff --git a/intern/audaspace/FX/AUD_IIRFilterReader.h b/intern/audaspace/FX/AUD_IIRFilterReader.h index af50b6f1cdc..db813d6bab6 100644 --- a/intern/audaspace/FX/AUD_IIRFilterReader.h +++ b/intern/audaspace/FX/AUD_IIRFilterReader.h @@ -63,7 +63,7 @@ public: * \param b The input filter coefficients. * \param a The output filter coefficients. */ - AUD_IIRFilterReader(AUD_IReader* reader, std::vector b, + AUD_IIRFilterReader(AUD_Reference reader, std::vector b, std::vector a); virtual sample_t filter(); diff --git a/intern/audaspace/FX/AUD_LimiterFactory.cpp b/intern/audaspace/FX/AUD_LimiterFactory.cpp index 62ea01bb761..e52cdd75d4d 100644 --- a/intern/audaspace/FX/AUD_LimiterFactory.cpp +++ b/intern/audaspace/FX/AUD_LimiterFactory.cpp @@ -33,7 +33,7 @@ #include "AUD_LimiterReader.h" #include "AUD_Space.h" -AUD_LimiterFactory::AUD_LimiterFactory(AUD_IFactory* factory, +AUD_LimiterFactory::AUD_LimiterFactory(AUD_Reference factory, float start, float end) : AUD_EffectFactory(factory), m_start(start), @@ -51,7 +51,7 @@ float AUD_LimiterFactory::getEnd() const return m_end; } -AUD_IReader* AUD_LimiterFactory::createReader() const +AUD_Reference AUD_LimiterFactory::createReader() const { return new AUD_LimiterReader(getReader(), m_start, m_end); } diff --git a/intern/audaspace/FX/AUD_LimiterFactory.h b/intern/audaspace/FX/AUD_LimiterFactory.h index f93f4b3276c..c45b9da65fe 100644 --- a/intern/audaspace/FX/AUD_LimiterFactory.h +++ b/intern/audaspace/FX/AUD_LimiterFactory.h @@ -62,7 +62,7 @@ public: * \param end The desired end time, a negative value signals that it should * play to the end. */ - AUD_LimiterFactory(AUD_IFactory* factory, + AUD_LimiterFactory(AUD_Reference factory, float start = 0, float end = -1); /** @@ -75,7 +75,7 @@ public: */ float getEnd() const; - virtual AUD_IReader* createReader() const; + virtual AUD_Reference createReader() const; }; #endif //AUD_LIMITERFACTORY diff --git a/intern/audaspace/FX/AUD_LimiterReader.cpp b/intern/audaspace/FX/AUD_LimiterReader.cpp index d67fbb4d0e5..d5a46568b3e 100644 --- a/intern/audaspace/FX/AUD_LimiterReader.cpp +++ b/intern/audaspace/FX/AUD_LimiterReader.cpp @@ -34,7 +34,7 @@ #include -AUD_LimiterReader::AUD_LimiterReader(AUD_IReader* reader, +AUD_LimiterReader::AUD_LimiterReader(AUD_Reference reader, float start, float end) : AUD_EffectReader(reader), m_start(int(start * reader->getSpecs().rate)), diff --git a/intern/audaspace/FX/AUD_LimiterReader.h b/intern/audaspace/FX/AUD_LimiterReader.h index 4375ed9e10d..f4502c33ae0 100644 --- a/intern/audaspace/FX/AUD_LimiterReader.h +++ b/intern/audaspace/FX/AUD_LimiterReader.h @@ -62,7 +62,7 @@ public: * \param end The desired end sample (exklusive), a negative value signals * that it should play to the end. */ - AUD_LimiterReader(AUD_IReader* reader, float start = 0, float end = -1); + AUD_LimiterReader(AUD_Reference reader, float start = 0, float end = -1); virtual void seek(int position); virtual int getLength() const; diff --git a/intern/audaspace/FX/AUD_LoopFactory.cpp b/intern/audaspace/FX/AUD_LoopFactory.cpp index 49d3481757f..021e69901b2 100644 --- a/intern/audaspace/FX/AUD_LoopFactory.cpp +++ b/intern/audaspace/FX/AUD_LoopFactory.cpp @@ -32,7 +32,7 @@ #include "AUD_LoopFactory.h" #include "AUD_LoopReader.h" -AUD_LoopFactory::AUD_LoopFactory(AUD_IFactory* factory, int loop) : +AUD_LoopFactory::AUD_LoopFactory(AUD_Reference factory, int loop) : AUD_EffectFactory(factory), m_loop(loop) { @@ -43,7 +43,7 @@ int AUD_LoopFactory::getLoop() const return m_loop; } -AUD_IReader* AUD_LoopFactory::createReader() const +AUD_Reference AUD_LoopFactory::createReader() const { return new AUD_LoopReader(getReader(), m_loop); } diff --git a/intern/audaspace/FX/AUD_LoopFactory.h b/intern/audaspace/FX/AUD_LoopFactory.h index dfbbbe4fd20..4d601d5a605 100644 --- a/intern/audaspace/FX/AUD_LoopFactory.h +++ b/intern/audaspace/FX/AUD_LoopFactory.h @@ -57,14 +57,14 @@ public: * \param loop The desired loop count, negative values result in endless * looping. */ - AUD_LoopFactory(AUD_IFactory* factory, int loop = -1); + AUD_LoopFactory(AUD_Reference factory, int loop = -1); /** * Returns the loop count. */ int getLoop() const; - virtual AUD_IReader* createReader() const; + virtual AUD_Reference createReader() const; }; #endif //AUD_LOOPFACTORY diff --git a/intern/audaspace/FX/AUD_LoopReader.cpp b/intern/audaspace/FX/AUD_LoopReader.cpp index b2e8e97a602..b7b8937abb8 100644 --- a/intern/audaspace/FX/AUD_LoopReader.cpp +++ b/intern/audaspace/FX/AUD_LoopReader.cpp @@ -34,7 +34,7 @@ #include -AUD_LoopReader::AUD_LoopReader(AUD_IReader* reader, int loop) : +AUD_LoopReader::AUD_LoopReader(AUD_Reference reader, int loop) : AUD_EffectReader(reader), m_count(loop), m_left(loop) { } diff --git a/intern/audaspace/FX/AUD_LoopReader.h b/intern/audaspace/FX/AUD_LoopReader.h index 45017901c56..866d6f7885f 100644 --- a/intern/audaspace/FX/AUD_LoopReader.h +++ b/intern/audaspace/FX/AUD_LoopReader.h @@ -68,7 +68,7 @@ public: * \param loop The desired loop count, negative values result in endless * looping. */ - AUD_LoopReader(AUD_IReader* reader, int loop); + AUD_LoopReader(AUD_Reference reader, int loop); virtual void seek(int position); virtual int getLength() const; diff --git a/intern/audaspace/FX/AUD_LowpassFactory.cpp b/intern/audaspace/FX/AUD_LowpassFactory.cpp index d24a04b5a94..d0f33c120d9 100644 --- a/intern/audaspace/FX/AUD_LowpassFactory.cpp +++ b/intern/audaspace/FX/AUD_LowpassFactory.cpp @@ -38,7 +38,7 @@ #define M_PI 3.14159265358979323846 #endif -AUD_LowpassFactory::AUD_LowpassFactory(AUD_IFactory* factory, float frequency, +AUD_LowpassFactory::AUD_LowpassFactory(AUD_Reference factory, float frequency, float Q) : AUD_EffectFactory(factory), m_frequency(frequency), @@ -46,9 +46,9 @@ AUD_LowpassFactory::AUD_LowpassFactory(AUD_IFactory* factory, float frequency, { } -AUD_IReader* AUD_LowpassFactory::createReader() const +AUD_Reference AUD_LowpassFactory::createReader() const { - AUD_IReader* reader = getReader(); + AUD_Reference reader = getReader(); // calculate coefficients float w0 = 2 * M_PI * m_frequency / reader->getSpecs().rate; diff --git a/intern/audaspace/FX/AUD_LowpassFactory.h b/intern/audaspace/FX/AUD_LowpassFactory.h index d60c0bd22d1..efe4dafc4e1 100644 --- a/intern/audaspace/FX/AUD_LowpassFactory.h +++ b/intern/audaspace/FX/AUD_LowpassFactory.h @@ -61,9 +61,9 @@ public: * \param frequency The cutoff frequency. * \param Q The Q factor. */ - AUD_LowpassFactory(AUD_IFactory* factory, float frequency, float Q = 1.0f); + AUD_LowpassFactory(AUD_Reference factory, float frequency, float Q = 1.0f); - virtual AUD_IReader* createReader() const; + virtual AUD_Reference createReader() const; }; #endif //AUD_LOWPASSFACTORY diff --git a/intern/audaspace/FX/AUD_PingPongFactory.cpp b/intern/audaspace/FX/AUD_PingPongFactory.cpp index fa140555943..4f0d2a207ac 100644 --- a/intern/audaspace/FX/AUD_PingPongFactory.cpp +++ b/intern/audaspace/FX/AUD_PingPongFactory.cpp @@ -33,26 +33,16 @@ #include "AUD_DoubleReader.h" #include "AUD_ReverseFactory.h" -AUD_PingPongFactory::AUD_PingPongFactory(AUD_IFactory* factory) : +AUD_PingPongFactory::AUD_PingPongFactory(AUD_Reference factory) : AUD_EffectFactory(factory) { } -AUD_IReader* AUD_PingPongFactory::createReader() const +AUD_Reference AUD_PingPongFactory::createReader() const { - AUD_IReader* reader = getReader(); - AUD_IReader* reader2; + AUD_Reference reader = getReader(); AUD_ReverseFactory factory(m_factory); - - try - { - reader2 = factory.createReader(); - } - catch(AUD_Exception&) - { - delete reader; - throw; - } + AUD_Reference reader2 = factory.createReader(); return new AUD_DoubleReader(reader, reader2); } diff --git a/intern/audaspace/FX/AUD_PingPongFactory.h b/intern/audaspace/FX/AUD_PingPongFactory.h index 4ae0c494eb7..1c88a5a7114 100644 --- a/intern/audaspace/FX/AUD_PingPongFactory.h +++ b/intern/audaspace/FX/AUD_PingPongFactory.h @@ -50,9 +50,9 @@ public: * Creates a new ping pong factory. * \param factory The input factory. */ - AUD_PingPongFactory(AUD_IFactory* factory); + AUD_PingPongFactory(AUD_Reference factory); - virtual AUD_IReader* createReader() const; + virtual AUD_Reference createReader() const; }; #endif //AUD_PINGPONGFACTORY diff --git a/intern/audaspace/FX/AUD_PitchFactory.cpp b/intern/audaspace/FX/AUD_PitchFactory.cpp index b4ae8582caf..94a3fb8034e 100644 --- a/intern/audaspace/FX/AUD_PitchFactory.cpp +++ b/intern/audaspace/FX/AUD_PitchFactory.cpp @@ -33,13 +33,13 @@ #include "AUD_PitchReader.h" #include "AUD_Space.h" -AUD_PitchFactory::AUD_PitchFactory(AUD_IFactory* factory, float pitch) : +AUD_PitchFactory::AUD_PitchFactory(AUD_Reference factory, float pitch) : AUD_EffectFactory(factory), m_pitch(pitch) { } -AUD_IReader* AUD_PitchFactory::createReader() const +AUD_Reference AUD_PitchFactory::createReader() const { return new AUD_PitchReader(getReader(), m_pitch); } diff --git a/intern/audaspace/FX/AUD_PitchFactory.h b/intern/audaspace/FX/AUD_PitchFactory.h index 8fa5be9293f..bbf08ef5993 100644 --- a/intern/audaspace/FX/AUD_PitchFactory.h +++ b/intern/audaspace/FX/AUD_PitchFactory.h @@ -55,9 +55,9 @@ public: * \param factory The input factory. * \param pitch The desired pitch. */ - AUD_PitchFactory(AUD_IFactory* factory, float pitch); + AUD_PitchFactory(AUD_Reference factory, float pitch); - virtual AUD_IReader* createReader() const; + virtual AUD_Reference createReader() const; }; #endif //AUD_PITCHFACTORY diff --git a/intern/audaspace/FX/AUD_PitchReader.cpp b/intern/audaspace/FX/AUD_PitchReader.cpp index e2e89e2c457..7f8b8b53105 100644 --- a/intern/audaspace/FX/AUD_PitchReader.cpp +++ b/intern/audaspace/FX/AUD_PitchReader.cpp @@ -31,7 +31,7 @@ #include "AUD_PitchReader.h" -AUD_PitchReader::AUD_PitchReader(AUD_IReader* reader, float pitch) : +AUD_PitchReader::AUD_PitchReader(AUD_Reference reader, float pitch) : AUD_EffectReader(reader), m_pitch(pitch) { } diff --git a/intern/audaspace/FX/AUD_PitchReader.h b/intern/audaspace/FX/AUD_PitchReader.h index 120cebc58be..7939027dca9 100644 --- a/intern/audaspace/FX/AUD_PitchReader.h +++ b/intern/audaspace/FX/AUD_PitchReader.h @@ -55,7 +55,7 @@ public: * \param reader The reader to read from. * \param pitch The size of the buffer. */ - AUD_PitchReader(AUD_IReader* reader, float pitch); + AUD_PitchReader(AUD_Reference reader, float pitch); virtual AUD_Specs getSpecs() const; }; diff --git a/intern/audaspace/FX/AUD_RectifyFactory.cpp b/intern/audaspace/FX/AUD_RectifyFactory.cpp index 609d827cce4..3bacd033eb3 100644 --- a/intern/audaspace/FX/AUD_RectifyFactory.cpp +++ b/intern/audaspace/FX/AUD_RectifyFactory.cpp @@ -39,12 +39,12 @@ sample_t rectifyFilter(AUD_CallbackIIRFilterReader* reader, void* useless) return fabs(reader->x(0)); } -AUD_RectifyFactory::AUD_RectifyFactory(AUD_IFactory* factory) : +AUD_RectifyFactory::AUD_RectifyFactory(AUD_Reference factory) : AUD_EffectFactory(factory) { } -AUD_IReader* AUD_RectifyFactory::createReader() const +AUD_Reference AUD_RectifyFactory::createReader() const { return new AUD_CallbackIIRFilterReader(getReader(), 1, 1, rectifyFilter); } diff --git a/intern/audaspace/FX/AUD_RectifyFactory.h b/intern/audaspace/FX/AUD_RectifyFactory.h index c3529c7beef..d8411186001 100644 --- a/intern/audaspace/FX/AUD_RectifyFactory.h +++ b/intern/audaspace/FX/AUD_RectifyFactory.h @@ -49,9 +49,9 @@ public: * Creates a new rectify factory. * \param factory The input factory. */ - AUD_RectifyFactory(AUD_IFactory* factory); + AUD_RectifyFactory(AUD_Reference factory); - virtual AUD_IReader* createReader() const; + virtual AUD_Reference createReader() const; }; #endif //AUD_RECTIFYFACTORY diff --git a/intern/audaspace/FX/AUD_ReverseFactory.cpp b/intern/audaspace/FX/AUD_ReverseFactory.cpp index 22b12e31420..88d812d7f2a 100644 --- a/intern/audaspace/FX/AUD_ReverseFactory.cpp +++ b/intern/audaspace/FX/AUD_ReverseFactory.cpp @@ -33,12 +33,12 @@ #include "AUD_ReverseReader.h" #include "AUD_Space.h" -AUD_ReverseFactory::AUD_ReverseFactory(AUD_IFactory* factory) : +AUD_ReverseFactory::AUD_ReverseFactory(AUD_Reference factory) : AUD_EffectFactory(factory) { } -AUD_IReader* AUD_ReverseFactory::createReader() const +AUD_Reference AUD_ReverseFactory::createReader() const { return new AUD_ReverseReader(getReader()); } diff --git a/intern/audaspace/FX/AUD_ReverseFactory.h b/intern/audaspace/FX/AUD_ReverseFactory.h index 7b20546302e..ae1fdd5a233 100644 --- a/intern/audaspace/FX/AUD_ReverseFactory.h +++ b/intern/audaspace/FX/AUD_ReverseFactory.h @@ -50,9 +50,9 @@ public: * Creates a new reverse factory. * \param factory The input factory. */ - AUD_ReverseFactory(AUD_IFactory* factory); + AUD_ReverseFactory(AUD_Reference factory); - virtual AUD_IReader* createReader() const; + virtual AUD_Reference createReader() const; }; #endif //AUD_REVERSEFACTORY diff --git a/intern/audaspace/FX/AUD_ReverseReader.cpp b/intern/audaspace/FX/AUD_ReverseReader.cpp index a4a03936c76..8ca9f8609bb 100644 --- a/intern/audaspace/FX/AUD_ReverseReader.cpp +++ b/intern/audaspace/FX/AUD_ReverseReader.cpp @@ -36,7 +36,7 @@ static const char* props_error = "AUD_ReverseReader: The reader has to be " "seekable and a finite length."; -AUD_ReverseReader::AUD_ReverseReader(AUD_IReader* reader) : +AUD_ReverseReader::AUD_ReverseReader(AUD_Reference reader) : AUD_EffectReader(reader), m_length(reader->getLength()), m_position(0) diff --git a/intern/audaspace/FX/AUD_ReverseReader.h b/intern/audaspace/FX/AUD_ReverseReader.h index e12f2b21191..d8086e08534 100644 --- a/intern/audaspace/FX/AUD_ReverseReader.h +++ b/intern/audaspace/FX/AUD_ReverseReader.h @@ -68,7 +68,7 @@ public: * \exception AUD_Exception Thrown if the reader specified has an * undeterminable/infinite length or is not seekable. */ - AUD_ReverseReader(AUD_IReader* reader); + AUD_ReverseReader(AUD_Reference reader); virtual void seek(int position); virtual int getLength() const; diff --git a/intern/audaspace/FX/AUD_SquareFactory.cpp b/intern/audaspace/FX/AUD_SquareFactory.cpp index a075773d2cb..a3ea088a258 100644 --- a/intern/audaspace/FX/AUD_SquareFactory.cpp +++ b/intern/audaspace/FX/AUD_SquareFactory.cpp @@ -48,7 +48,7 @@ void endSquareFilter(float* threshold) delete threshold; } -AUD_SquareFactory::AUD_SquareFactory(AUD_IFactory* factory, float threshold) : +AUD_SquareFactory::AUD_SquareFactory(AUD_Reference factory, float threshold) : AUD_EffectFactory(factory), m_threshold(threshold) { @@ -59,7 +59,7 @@ float AUD_SquareFactory::getThreshold() const return m_threshold; } -AUD_IReader* AUD_SquareFactory::createReader() const +AUD_Reference AUD_SquareFactory::createReader() const { return new AUD_CallbackIIRFilterReader(getReader(), 1, 1, (doFilterIIR) squareFilter, diff --git a/intern/audaspace/FX/AUD_SquareFactory.h b/intern/audaspace/FX/AUD_SquareFactory.h index 8060e98e281..60db49c48e5 100644 --- a/intern/audaspace/FX/AUD_SquareFactory.h +++ b/intern/audaspace/FX/AUD_SquareFactory.h @@ -55,14 +55,14 @@ public: * \param factory The input factory. * \param threshold The threshold. */ - AUD_SquareFactory(AUD_IFactory* factory, float threshold = 0.0f); + AUD_SquareFactory(AUD_Reference factory, float threshold = 0.0f); /** * Returns the threshold. */ float getThreshold() const; - virtual AUD_IReader* createReader() const; + virtual AUD_Reference createReader() const; }; #endif //AUD_SQUAREFACTORY diff --git a/intern/audaspace/FX/AUD_SumFactory.cpp b/intern/audaspace/FX/AUD_SumFactory.cpp index 6d8368d6e35..582e2d75b7f 100644 --- a/intern/audaspace/FX/AUD_SumFactory.cpp +++ b/intern/audaspace/FX/AUD_SumFactory.cpp @@ -32,12 +32,12 @@ #include "AUD_SumFactory.h" #include "AUD_IIRFilterReader.h" -AUD_SumFactory::AUD_SumFactory(AUD_IFactory* factory) : +AUD_SumFactory::AUD_SumFactory(AUD_Reference factory) : AUD_EffectFactory(factory) { } -AUD_IReader* AUD_SumFactory::createReader() const +AUD_Reference AUD_SumFactory::createReader() const { std::vector a, b; a.push_back(1); diff --git a/intern/audaspace/FX/AUD_SumFactory.h b/intern/audaspace/FX/AUD_SumFactory.h index ed19a0f258a..948355e50fd 100644 --- a/intern/audaspace/FX/AUD_SumFactory.h +++ b/intern/audaspace/FX/AUD_SumFactory.h @@ -49,9 +49,9 @@ public: * Creates a new sum factory. * \param factory The input factory. */ - AUD_SumFactory(AUD_IFactory* factory); + AUD_SumFactory(AUD_Reference factory); - virtual AUD_IReader* createReader() const; + virtual AUD_Reference createReader() const; }; #endif //AUD_SUMFACTORY diff --git a/intern/audaspace/FX/AUD_SuperposeFactory.cpp b/intern/audaspace/FX/AUD_SuperposeFactory.cpp index c13a0d0dd95..b5e816f66a8 100644 --- a/intern/audaspace/FX/AUD_SuperposeFactory.cpp +++ b/intern/audaspace/FX/AUD_SuperposeFactory.cpp @@ -32,24 +32,15 @@ #include "AUD_SuperposeFactory.h" #include "AUD_SuperposeReader.h" -AUD_SuperposeFactory::AUD_SuperposeFactory(AUD_IFactory* factory1, AUD_IFactory* factory2) : +AUD_SuperposeFactory::AUD_SuperposeFactory(AUD_Reference factory1, AUD_Reference factory2) : m_factory1(factory1), m_factory2(factory2) { } -AUD_IReader* AUD_SuperposeFactory::createReader() const +AUD_Reference AUD_SuperposeFactory::createReader() const { - AUD_IReader* reader1 = m_factory1->createReader(); - AUD_IReader* reader2; - try - { - reader2 = m_factory2->createReader(); - } - catch(AUD_Exception&) - { - delete reader1; - throw; - } + AUD_Reference reader1 = m_factory1->createReader(); + AUD_Reference reader2 = m_factory2->createReader(); return new AUD_SuperposeReader(reader1, reader2); } diff --git a/intern/audaspace/FX/AUD_SuperposeFactory.h b/intern/audaspace/FX/AUD_SuperposeFactory.h index 32232012e4e..d302658097e 100644 --- a/intern/audaspace/FX/AUD_SuperposeFactory.h +++ b/intern/audaspace/FX/AUD_SuperposeFactory.h @@ -44,12 +44,12 @@ private: /** * First played factory. */ - AUD_IFactory* m_factory1; + AUD_Reference m_factory1; /** * Second played factory. */ - AUD_IFactory* m_factory2; + AUD_Reference m_factory2; // hide copy constructor and operator= AUD_SuperposeFactory(const AUD_SuperposeFactory&); @@ -61,9 +61,9 @@ public: * \param factory1 The first input factory. * \param factory2 The second input factory. */ - AUD_SuperposeFactory(AUD_IFactory* factory1, AUD_IFactory* factory2); + AUD_SuperposeFactory(AUD_Reference factory1, AUD_Reference factory2); - virtual AUD_IReader* createReader() const; + virtual AUD_Reference createReader() const; }; #endif //AUD_SUPERPOSEFACTORY diff --git a/intern/audaspace/FX/AUD_SuperposeReader.cpp b/intern/audaspace/FX/AUD_SuperposeReader.cpp index e64cf79188e..6f39dcadf40 100644 --- a/intern/audaspace/FX/AUD_SuperposeReader.cpp +++ b/intern/audaspace/FX/AUD_SuperposeReader.cpp @@ -36,30 +36,18 @@ static const char* specs_error = "AUD_SuperposeReader: Both readers have to " "have the same specs."; -AUD_SuperposeReader::AUD_SuperposeReader(AUD_IReader* reader1, AUD_IReader* reader2) : +AUD_SuperposeReader::AUD_SuperposeReader(AUD_Reference reader1, AUD_Reference reader2) : m_reader1(reader1), m_reader2(reader2) { - try - { - AUD_Specs s1, s2; - s1 = reader1->getSpecs(); - s2 = reader2->getSpecs(); - if(memcmp(&s1, &s2, sizeof(AUD_Specs))) - AUD_THROW(AUD_ERROR_SPECS, specs_error); - } - catch(AUD_Exception&) - { - delete reader1; - delete reader2; - - throw; - } + AUD_Specs s1, s2; + s1 = reader1->getSpecs(); + s2 = reader2->getSpecs(); + if(memcmp(&s1, &s2, sizeof(AUD_Specs))) + AUD_THROW(AUD_ERROR_SPECS, specs_error); } AUD_SuperposeReader::~AUD_SuperposeReader() { - delete m_reader1; - delete m_reader2; } bool AUD_SuperposeReader::isSeekable() const diff --git a/intern/audaspace/FX/AUD_SuperposeReader.h b/intern/audaspace/FX/AUD_SuperposeReader.h index b256aade7ba..26e4b138dfa 100644 --- a/intern/audaspace/FX/AUD_SuperposeReader.h +++ b/intern/audaspace/FX/AUD_SuperposeReader.h @@ -34,6 +34,7 @@ #include "AUD_IReader.h" #include "AUD_Buffer.h" +#include "AUD_Reference.h" /** * This reader plays two readers with the same specs sequently. @@ -44,12 +45,12 @@ private: /** * The first reader. */ - AUD_IReader* m_reader1; + AUD_Reference m_reader1; /** * The second reader. */ - AUD_IReader* m_reader2; + AUD_Reference m_reader2; /** * The playback buffer for the intersecting part. @@ -67,7 +68,7 @@ public: * \param reader2 The second reader to read from. * \exception AUD_Exception Thrown if the specs from the readers differ. */ - AUD_SuperposeReader(AUD_IReader* reader1, AUD_IReader* reader2); + AUD_SuperposeReader(AUD_Reference reader1, AUD_Reference reader2); /** * Destroys the reader. diff --git a/intern/audaspace/FX/AUD_VolumeFactory.cpp b/intern/audaspace/FX/AUD_VolumeFactory.cpp index 166fbf61512..1249c4ab9bd 100644 --- a/intern/audaspace/FX/AUD_VolumeFactory.cpp +++ b/intern/audaspace/FX/AUD_VolumeFactory.cpp @@ -32,7 +32,7 @@ #include "AUD_VolumeFactory.h" #include "AUD_IIRFilterReader.h" -AUD_VolumeFactory::AUD_VolumeFactory(AUD_IFactory* factory, float volume) : +AUD_VolumeFactory::AUD_VolumeFactory(AUD_Reference factory, float volume) : AUD_EffectFactory(factory), m_volume(volume) { @@ -43,7 +43,7 @@ float AUD_VolumeFactory::getVolume() const return m_volume; } -AUD_IReader* AUD_VolumeFactory::createReader() const +AUD_Reference AUD_VolumeFactory::createReader() const { std::vector a, b; a.push_back(1); diff --git a/intern/audaspace/FX/AUD_VolumeFactory.h b/intern/audaspace/FX/AUD_VolumeFactory.h index fa40ca11082..3cb8bc1da17 100644 --- a/intern/audaspace/FX/AUD_VolumeFactory.h +++ b/intern/audaspace/FX/AUD_VolumeFactory.h @@ -57,14 +57,14 @@ public: * \param factory The input factory. * \param volume The desired volume. */ - AUD_VolumeFactory(AUD_IFactory* factory, float volume); + AUD_VolumeFactory(AUD_Reference factory, float volume); /** * Returns the volume. */ float getVolume() const; - virtual AUD_IReader* createReader() const; + virtual AUD_Reference createReader() const; }; #endif //AUD_VOLUMEFACTORY -- cgit v1.2.3