diff options
author | Joerg Mueller <nexyon@gmail.com> | 2011-08-30 13:15:55 +0400 |
---|---|---|
committer | Joerg Mueller <nexyon@gmail.com> | 2011-08-30 13:15:55 +0400 |
commit | 9424b1ceff992f420fe6315acabfb7138cd0026e (patch) | |
tree | 2f19cac8af2ad32852cf9c46cb542e14fabe8d9b /intern/audaspace/FX/AUD_FaderReader.cpp | |
parent | d049a722fea3d150fbfad06ffdbbb5c150717134 (diff) | |
parent | 43ab8e86247b7889d16d915b4f370ceb618aaad4 (diff) |
Merging pepper to trunk at revision 39791.
Important note: I used rsync to do the local merge, as "svn merge --reintegrate ^/branches/soc-2011-pepper" doesn't work with our svn server right now!
Diffstat (limited to 'intern/audaspace/FX/AUD_FaderReader.cpp')
-rw-r--r-- | intern/audaspace/FX/AUD_FaderReader.cpp | 46 |
1 files changed, 7 insertions, 39 deletions
diff --git a/intern/audaspace/FX/AUD_FaderReader.cpp b/intern/audaspace/FX/AUD_FaderReader.cpp index 6114bb486fc..4a6050cf0f3 100644 --- a/intern/audaspace/FX/AUD_FaderReader.cpp +++ b/intern/audaspace/FX/AUD_FaderReader.cpp @@ -33,68 +33,39 @@ #include <cstring> -AUD_FaderReader::AUD_FaderReader(AUD_IReader* reader, AUD_FadeType type, +AUD_FaderReader::AUD_FaderReader(AUD_Reference<AUD_IReader> reader, AUD_FadeType type, float start,float length) : AUD_EffectReader(reader), m_type(type), m_start(start), - m_length(length), - m_empty(true) + m_length(length) { } -void AUD_FaderReader::read(int & length, sample_t* & buffer) +void AUD_FaderReader::read(int& length, bool& eos, sample_t* buffer) { int position = m_reader->getPosition(); AUD_Specs specs = m_reader->getSpecs(); int samplesize = AUD_SAMPLE_SIZE(specs); - m_reader->read(length, buffer); + m_reader->read(length, eos, buffer); if((position + length) / (float)specs.rate <= m_start) { if(m_type != AUD_FADE_OUT) { - if(m_buffer.getSize() < length * samplesize) - { - m_buffer.resize(length * samplesize); - m_empty = false; - } - - buffer = m_buffer.getBuffer(); - - if(!m_empty) - { - memset(buffer, 0, length * samplesize); - m_empty = true; - } + memset(buffer, 0, length * samplesize); } } else if(position / (float)specs.rate >= m_start+m_length) { if(m_type == AUD_FADE_OUT) { - if(m_buffer.getSize() < length * samplesize) - { - m_buffer.resize(length * samplesize); - m_empty = false; - } - - buffer = m_buffer.getBuffer(); - - if(!m_empty) - { - memset(buffer, 0, length * samplesize); - m_empty = true; - } + memset(buffer, 0, length * samplesize); } } else { - if(m_buffer.getSize() < length * samplesize) - m_buffer.resize(length * samplesize); - - sample_t* buf = m_buffer.getBuffer(); float volume = 1.0f; for(int i = 0; i < length * specs.channels; i++) @@ -111,10 +82,7 @@ void AUD_FaderReader::read(int & length, sample_t* & buffer) volume = 1.0f - volume; } - buf[i] = buffer[i] * volume; + buffer[i] = buffer[i] * volume; } - - buffer = buf; - m_empty = false; } } |