[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [37710] branches/soc-2011-pepper/intern/ audaspace: 3D Audio GSoC:
Joerg Mueller
nexyon at gmail.com
Tue Jun 21 22:14:55 CEST 2011
Revision: 37710
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37710
Author: nexyon
Date: 2011-06-21 20:14:53 +0000 (Tue, 21 Jun 2011)
Log Message:
-----------
3D Audio GSoC:
Streaming improved.
Modified Paths:
--------------
branches/soc-2011-pepper/intern/audaspace/FX/AUD_BaseIIRFilterReader.cpp
branches/soc-2011-pepper/intern/audaspace/FX/AUD_BaseIIRFilterReader.h
branches/soc-2011-pepper/intern/audaspace/FX/AUD_DelayReader.cpp
branches/soc-2011-pepper/intern/audaspace/FX/AUD_DelayReader.h
branches/soc-2011-pepper/intern/audaspace/FX/AUD_DoubleReader.cpp
branches/soc-2011-pepper/intern/audaspace/FX/AUD_DoubleReader.h
branches/soc-2011-pepper/intern/audaspace/FX/AUD_EffectReader.cpp
branches/soc-2011-pepper/intern/audaspace/FX/AUD_EffectReader.h
branches/soc-2011-pepper/intern/audaspace/FX/AUD_FaderReader.cpp
branches/soc-2011-pepper/intern/audaspace/FX/AUD_FaderReader.h
branches/soc-2011-pepper/intern/audaspace/FX/AUD_LimiterReader.cpp
branches/soc-2011-pepper/intern/audaspace/FX/AUD_LimiterReader.h
branches/soc-2011-pepper/intern/audaspace/FX/AUD_LoopReader.cpp
branches/soc-2011-pepper/intern/audaspace/FX/AUD_LoopReader.h
branches/soc-2011-pepper/intern/audaspace/FX/AUD_ReverseReader.cpp
branches/soc-2011-pepper/intern/audaspace/FX/AUD_ReverseReader.h
branches/soc-2011-pepper/intern/audaspace/FX/AUD_SuperposeReader.cpp
branches/soc-2011-pepper/intern/audaspace/FX/AUD_SuperposeReader.h
branches/soc-2011-pepper/intern/audaspace/OpenAL/AUD_OpenALDevice.cpp
branches/soc-2011-pepper/intern/audaspace/SRC/AUD_SRCResampleReader.cpp
branches/soc-2011-pepper/intern/audaspace/SRC/AUD_SRCResampleReader.h
branches/soc-2011-pepper/intern/audaspace/ffmpeg/AUD_FFMPEGReader.cpp
branches/soc-2011-pepper/intern/audaspace/ffmpeg/AUD_FFMPEGReader.h
branches/soc-2011-pepper/intern/audaspace/intern/AUD_BufferReader.cpp
branches/soc-2011-pepper/intern/audaspace/intern/AUD_BufferReader.h
branches/soc-2011-pepper/intern/audaspace/intern/AUD_C-API.cpp
branches/soc-2011-pepper/intern/audaspace/intern/AUD_ChannelMapperReader.cpp
branches/soc-2011-pepper/intern/audaspace/intern/AUD_ChannelMapperReader.h
branches/soc-2011-pepper/intern/audaspace/intern/AUD_ConverterReader.cpp
branches/soc-2011-pepper/intern/audaspace/intern/AUD_ConverterReader.h
branches/soc-2011-pepper/intern/audaspace/intern/AUD_IReader.h
branches/soc-2011-pepper/intern/audaspace/intern/AUD_LinearResampleReader.cpp
branches/soc-2011-pepper/intern/audaspace/intern/AUD_LinearResampleReader.h
branches/soc-2011-pepper/intern/audaspace/intern/AUD_SequencerReader.cpp
branches/soc-2011-pepper/intern/audaspace/intern/AUD_SequencerReader.h
branches/soc-2011-pepper/intern/audaspace/intern/AUD_SilenceReader.cpp
branches/soc-2011-pepper/intern/audaspace/intern/AUD_SilenceReader.h
branches/soc-2011-pepper/intern/audaspace/intern/AUD_SinusReader.cpp
branches/soc-2011-pepper/intern/audaspace/intern/AUD_SinusReader.h
branches/soc-2011-pepper/intern/audaspace/intern/AUD_SoftwareDevice.cpp
branches/soc-2011-pepper/intern/audaspace/intern/AUD_StreamBufferFactory.cpp
branches/soc-2011-pepper/intern/audaspace/sndfile/AUD_SndFileReader.cpp
branches/soc-2011-pepper/intern/audaspace/sndfile/AUD_SndFileReader.h
Modified: branches/soc-2011-pepper/intern/audaspace/FX/AUD_BaseIIRFilterReader.cpp
===================================================================
--- branches/soc-2011-pepper/intern/audaspace/FX/AUD_BaseIIRFilterReader.cpp 2011-06-21 20:14:07 UTC (rev 37709)
+++ branches/soc-2011-pepper/intern/audaspace/FX/AUD_BaseIIRFilterReader.cpp 2011-06-21 20:14:53 UTC (rev 37710)
@@ -55,9 +55,9 @@
delete[] m_y;
}
-void AUD_BaseIIRFilterReader::read(int & length, sample_t* buffer)
+void AUD_BaseIIRFilterReader::read(int& length, bool& eos, sample_t* buffer)
{
- m_reader->read(length, buffer);
+ m_reader->read(length, eos, buffer);
for(m_channel = 0; m_channel < m_channels; m_channel++)
{
Modified: branches/soc-2011-pepper/intern/audaspace/FX/AUD_BaseIIRFilterReader.h
===================================================================
--- branches/soc-2011-pepper/intern/audaspace/FX/AUD_BaseIIRFilterReader.h 2011-06-21 20:14:07 UTC (rev 37709)
+++ branches/soc-2011-pepper/intern/audaspace/FX/AUD_BaseIIRFilterReader.h 2011-06-21 20:14:53 UTC (rev 37710)
@@ -107,7 +107,7 @@
virtual ~AUD_BaseIIRFilterReader();
- virtual void read(int & length, sample_t* buffer);
+ virtual void read(int& length, bool& eos, sample_t* buffer);
virtual sample_t filter()=0;
};
Modified: branches/soc-2011-pepper/intern/audaspace/FX/AUD_DelayReader.cpp
===================================================================
--- branches/soc-2011-pepper/intern/audaspace/FX/AUD_DelayReader.cpp 2011-06-21 20:14:07 UTC (rev 37709)
+++ branches/soc-2011-pepper/intern/audaspace/FX/AUD_DelayReader.cpp 2011-06-21 20:14:53 UTC (rev 37710)
@@ -69,7 +69,7 @@
return m_reader->getPosition() + m_delay;
}
-void AUD_DelayReader::read(int & length, sample_t* buffer)
+void AUD_DelayReader::read(int& length, bool& eos, sample_t* buffer)
{
if(m_remdelay > 0)
{
@@ -81,10 +81,9 @@
memset(buffer, 0, m_remdelay * samplesize);
int len = length - m_remdelay;
- m_reader->read(len, buffer + m_remdelay * specs.channels);
+ m_reader->read(len, eos, buffer + m_remdelay * specs.channels);
- if(len < length-m_remdelay)
- length = m_remdelay + len;
+ length = m_remdelay + len;
m_remdelay = 0;
}
@@ -95,5 +94,5 @@
}
}
else
- m_reader->read(length, buffer);
+ m_reader->read(length, eos, buffer);
}
Modified: branches/soc-2011-pepper/intern/audaspace/FX/AUD_DelayReader.h
===================================================================
--- branches/soc-2011-pepper/intern/audaspace/FX/AUD_DelayReader.h 2011-06-21 20:14:07 UTC (rev 37709)
+++ branches/soc-2011-pepper/intern/audaspace/FX/AUD_DelayReader.h 2011-06-21 20:14:53 UTC (rev 37710)
@@ -66,7 +66,7 @@
virtual void seek(int position);
virtual int getLength() const;
virtual int getPosition() const;
- virtual void read(int & length, sample_t* buffer);
+ virtual void read(int& length, bool& eos, sample_t* buffer);
};
#endif //AUD_DELAYREADER
Modified: branches/soc-2011-pepper/intern/audaspace/FX/AUD_DoubleReader.cpp
===================================================================
--- branches/soc-2011-pepper/intern/audaspace/FX/AUD_DoubleReader.cpp 2011-06-21 20:14:07 UTC (rev 37709)
+++ branches/soc-2011-pepper/intern/audaspace/FX/AUD_DoubleReader.cpp 2011-06-21 20:14:53 UTC (rev 37710)
@@ -89,29 +89,27 @@
return m_reader1->getSpecs();
}
-void AUD_DoubleReader::read(int & length, sample_t* buffer)
+void AUD_DoubleReader::read(int& length, bool& eos, sample_t* buffer)
{
if(!m_finished1)
{
int len = length;
- m_reader1->read(len, buffer);
+ m_reader1->read(len, m_finished1, buffer);
- if(len < length)
+ if(m_finished1)
{
const AUD_Specs specs = m_reader1->getSpecs();
len = length - len;
length -= len;
- m_reader2->read(len, buffer + length * specs.channels);
+ m_reader2->read(len, eos, buffer + length * specs.channels);
length += len;
-
- m_finished1 = true;
}
}
else
{
- m_reader2->read(length, buffer);
+ m_reader2->read(length, eos, buffer);
}
}
Modified: branches/soc-2011-pepper/intern/audaspace/FX/AUD_DoubleReader.h
===================================================================
--- branches/soc-2011-pepper/intern/audaspace/FX/AUD_DoubleReader.h 2011-06-21 20:14:07 UTC (rev 37709)
+++ branches/soc-2011-pepper/intern/audaspace/FX/AUD_DoubleReader.h 2011-06-21 20:14:53 UTC (rev 37710)
@@ -85,7 +85,7 @@
virtual int getLength() const;
virtual int getPosition() const;
virtual AUD_Specs getSpecs() const;
- virtual void read(int & length, sample_t* buffer);
+ virtual void read(int& length, bool& eos, sample_t* buffer);
};
#endif //AUD_DOUBLEREADER
Modified: branches/soc-2011-pepper/intern/audaspace/FX/AUD_EffectReader.cpp
===================================================================
--- branches/soc-2011-pepper/intern/audaspace/FX/AUD_EffectReader.cpp 2011-06-21 20:14:07 UTC (rev 37709)
+++ branches/soc-2011-pepper/intern/audaspace/FX/AUD_EffectReader.cpp 2011-06-21 20:14:53 UTC (rev 37710)
@@ -65,7 +65,7 @@
return m_reader->getSpecs();
}
-void AUD_EffectReader::read(int & length, sample_t* buffer)
+void AUD_EffectReader::read(int& length, bool& eos, sample_t* buffer)
{
- m_reader->read(length, buffer);
+ m_reader->read(length, eos, buffer);
}
Modified: branches/soc-2011-pepper/intern/audaspace/FX/AUD_EffectReader.h
===================================================================
--- branches/soc-2011-pepper/intern/audaspace/FX/AUD_EffectReader.h 2011-06-21 20:14:07 UTC (rev 37709)
+++ branches/soc-2011-pepper/intern/audaspace/FX/AUD_EffectReader.h 2011-06-21 20:14:53 UTC (rev 37710)
@@ -69,7 +69,7 @@
virtual int getLength() const;
virtual int getPosition() const;
virtual AUD_Specs getSpecs() const;
- virtual void read(int & length, sample_t* buffer);
+ virtual void read(int& length, bool& eos, sample_t* buffer);
};
#endif //AUD_EFFECTREADER
Modified: branches/soc-2011-pepper/intern/audaspace/FX/AUD_FaderReader.cpp
===================================================================
--- branches/soc-2011-pepper/intern/audaspace/FX/AUD_FaderReader.cpp 2011-06-21 20:14:07 UTC (rev 37709)
+++ branches/soc-2011-pepper/intern/audaspace/FX/AUD_FaderReader.cpp 2011-06-21 20:14:53 UTC (rev 37710)
@@ -42,13 +42,13 @@
{
}
-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)
{
Modified: branches/soc-2011-pepper/intern/audaspace/FX/AUD_FaderReader.h
===================================================================
--- branches/soc-2011-pepper/intern/audaspace/FX/AUD_FaderReader.h 2011-06-21 20:14:07 UTC (rev 37709)
+++ branches/soc-2011-pepper/intern/audaspace/FX/AUD_FaderReader.h 2011-06-21 20:14:53 UTC (rev 37710)
@@ -72,7 +72,7 @@
AUD_FaderReader(AUD_Reference<AUD_IReader> reader, AUD_FadeType type,
float start,float length);
- virtual void read(int & length, sample_t* buffer);
+ virtual void read(int& length, bool& eos, sample_t* buffer);
};
#endif //AUD_FADERREADER
Modified: branches/soc-2011-pepper/intern/audaspace/FX/AUD_LimiterReader.cpp
===================================================================
--- branches/soc-2011-pepper/intern/audaspace/FX/AUD_LimiterReader.cpp 2011-06-21 20:14:07 UTC (rev 37709)
+++ branches/soc-2011-pepper/intern/audaspace/FX/AUD_LimiterReader.cpp 2011-06-21 20:14:53 UTC (rev 37710)
@@ -49,13 +49,15 @@
// skip first m_start samples by reading them
int length = AUD_DEFAULT_BUFFER_SIZE;
AUD_Buffer buffer(AUD_DEFAULT_BUFFER_SIZE * AUD_SAMPLE_SIZE(m_reader->getSpecs()));
+ bool eos = false;
for(int len = m_start;
- length == AUD_DEFAULT_BUFFER_SIZE;
+ length == AUD_DEFAULT_BUFFER_SIZE && !eos;
len -= AUD_DEFAULT_BUFFER_SIZE)
{
if(len < AUD_DEFAULT_BUFFER_SIZE)
length = len;
- m_reader->read(length, buffer.getBuffer());
+
+ m_reader->read(length, eos, buffer.getBuffer());
}
}
}
@@ -80,18 +82,50 @@
return AUD_MIN(pos, m_end) - m_start;
}
-void AUD_LimiterReader::read(int & length, sample_t* buffer)
+void AUD_LimiterReader::read(int& length, bool& eos, sample_t* buffer)
{
+ eos = false;
if(m_end >= 0)
{
int position = m_reader->getPosition();
if(position + length > m_end)
+ {
length = m_end - position;
+ eos = true;
+ }
+
+ if(position < m_start)
+ {
+ int len2 = length;
+ for(int len = m_start - position;
+ len2 == length && !eos;
+ len -= length)
+ {
+ if(len < length)
+ len2 = len;
+
+ m_reader->read(len2, eos, buffer);
+ position += len2;
+ }
+
+ if(position < m_start)
+ {
+ length = 0;
+ return;
+ }
+ }
+
if(length < 0)
{
length = 0;
return;
}
}
- m_reader->read(length, buffer);
+ if(eos)
+ {
+ m_reader->read(length, eos, buffer);
+ eos = true;
+ }
+ else
+ m_reader->read(length, eos, buffer);
}
Modified: branches/soc-2011-pepper/intern/audaspace/FX/AUD_LimiterReader.h
===================================================================
--- branches/soc-2011-pepper/intern/audaspace/FX/AUD_LimiterReader.h 2011-06-21 20:14:07 UTC (rev 37709)
+++ branches/soc-2011-pepper/intern/audaspace/FX/AUD_LimiterReader.h 2011-06-21 20:14:53 UTC (rev 37710)
@@ -67,7 +67,7 @@
virtual void seek(int position);
virtual int getLength() const;
virtual int getPosition() const;
- virtual void read(int & length, sample_t* buffer);
+ virtual void read(int& length, bool& eos, sample_t* buffer);
};
#endif //AUD_LIMITERREADER
Modified: branches/soc-2011-pepper/intern/audaspace/FX/AUD_LoopReader.cpp
===================================================================
--- branches/soc-2011-pepper/intern/audaspace/FX/AUD_LoopReader.cpp 2011-06-21 20:14:07 UTC (rev 37709)
+++ branches/soc-2011-pepper/intern/audaspace/FX/AUD_LoopReader.cpp 2011-06-21 20:14:53 UTC (rev 37710)
@@ -68,21 +68,20 @@
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);
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list