Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoerg Mueller <nexyon@gmail.com>2011-06-22 00:14:53 +0400
committerJoerg Mueller <nexyon@gmail.com>2011-06-22 00:14:53 +0400
commitcc71dcc218d9ee4612bfe955be6f00be521be5b1 (patch)
tree5f868efc11f940b72cdf0e0c5d19f27e7d3067c7 /intern/audaspace/FX/AUD_LoopReader.cpp
parent7ba4362c72c3ccd4763762414bd928682a51b7ce (diff)
3D Audio GSoC:
Streaming improved.
Diffstat (limited to 'intern/audaspace/FX/AUD_LoopReader.cpp')
-rw-r--r--intern/audaspace/FX/AUD_LoopReader.cpp19
1 files changed, 8 insertions, 11 deletions
diff --git a/intern/audaspace/FX/AUD_LoopReader.cpp b/intern/audaspace/FX/AUD_LoopReader.cpp
index 0efee5b55c0..de67a445ab2 100644
--- a/intern/audaspace/FX/AUD_LoopReader.cpp
+++ b/intern/audaspace/FX/AUD_LoopReader.cpp
@@ -68,21 +68,20 @@ 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, bool& eos, sample_t* buffer)
{
- AUD_Specs specs = m_reader->getSpecs();
+ const AUD_Specs specs = m_reader->getSpecs();
int len = length;
- m_reader->read(len, buffer);
+ m_reader->read(length, eos, buffer);
- if(len < length && m_left)
+ if(length < len && eos && m_left)
{
- int pos = 0;
-
- pos += len;
+ int pos = length;
+ length = len;
- while(pos < length && m_left)
+ while(pos < length && eos && m_left)
{
if(m_left > 0)
m_left--;
@@ -90,7 +89,7 @@ void AUD_LoopReader::read(int & length, sample_t* buffer)
m_reader->seek(0);
len = length - pos;
- m_reader->read(len, buffer + pos * specs.channels);
+ m_reader->read(len, eos, buffer + pos * specs.channels);
// prevent endless loop
if(!len)
@@ -101,6 +100,4 @@ void AUD_LoopReader::read(int & length, sample_t* buffer)
length = pos;
}
- else
- length = len;
}