diff options
Diffstat (limited to 'intern/audaspace/FX/AUD_LoopReader.cpp')
-rw-r--r-- | intern/audaspace/FX/AUD_LoopReader.cpp | 15 |
1 files changed, 2 insertions, 13 deletions
diff --git a/intern/audaspace/FX/AUD_LoopReader.cpp b/intern/audaspace/FX/AUD_LoopReader.cpp index b7b8937abb8..0efee5b55c0 100644 --- a/intern/audaspace/FX/AUD_LoopReader.cpp +++ b/intern/audaspace/FX/AUD_LoopReader.cpp @@ -68,10 +68,9 @@ int AUD_LoopReader::getPosition() const return m_reader->getPosition() * (m_count < 0 ? 1 : m_count); } -void AUD_LoopReader::read(int & length, sample_t* & buffer) +void AUD_LoopReader::read(int & length, sample_t* buffer) { AUD_Specs specs = m_reader->getSpecs(); - int samplesize = AUD_SAMPLE_SIZE(specs); int len = length; @@ -81,13 +80,6 @@ void AUD_LoopReader::read(int & length, sample_t* & buffer) { int pos = 0; - if(m_buffer.getSize() < length * samplesize) - m_buffer.resize(length * samplesize); - - sample_t* buf = m_buffer.getBuffer(); - - memcpy(buf + pos * specs.channels, buffer, len * samplesize); - pos += len; while(pos < length && m_left) @@ -98,19 +90,16 @@ void AUD_LoopReader::read(int & length, sample_t* & buffer) m_reader->seek(0); len = length - pos; - m_reader->read(len, buffer); + m_reader->read(len, buffer + pos * specs.channels); // prevent endless loop if(!len) break; - memcpy(buf + pos * specs.channels, buffer, len * samplesize); - pos += len; } length = pos; - buffer = buf; } else length = len; |