[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [37477] branches/soc-2011-pepper/intern/ audaspace: 3D Audio GSoC:

Joerg Mueller nexyon at gmail.com
Tue Jun 14 14:13:22 CEST 2011


Revision: 37477
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37477
Author:   nexyon
Date:     2011-06-14 12:13:19 +0000 (Tue, 14 Jun 2011)
Log Message:
-----------
3D Audio GSoC:
Changed Readers to top-down architecture instead of bottom-up.

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/OpenAL/AUD_OpenALDevice.h
    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_Mixer.cpp
    branches/soc-2011-pepper/intern/audaspace/intern/AUD_Mixer.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_SoftwareDevice.h
    branches/soc-2011-pepper/intern/audaspace/intern/AUD_StreamBufferFactory.cpp
    branches/soc-2011-pepper/intern/audaspace/jack/AUD_JackDevice.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-14 12:06:21 UTC (rev 37476)
+++ branches/soc-2011-pepper/intern/audaspace/FX/AUD_BaseIIRFilterReader.cpp	2011-06-14 12:13:19 UTC (rev 37477)
@@ -55,24 +55,15 @@
 	delete[] m_y;
 }
 
-void AUD_BaseIIRFilterReader::read(int & length, sample_t* & buffer)
+void AUD_BaseIIRFilterReader::read(int & length, sample_t* buffer)
 {
-	sample_t* buf;
+	m_reader->read(length, buffer);
 
-	int samplesize = AUD_SAMPLE_SIZE(m_reader->getSpecs());
-
-	m_reader->read(length, buf);
-
-	if(m_buffer.getSize() < length * samplesize)
-		m_buffer.resize(length * samplesize);
-
-	buffer = m_buffer.getBuffer();
-
 	for(m_channel = 0; m_channel < m_channels; m_channel++)
 	{
 		for(int i = 0; i < length; i++)
 		{
-			m_x[m_xpos * CC] = buf[i * CC];
+			m_x[m_xpos * CC] = buffer[i * CC];
 			m_y[m_ypos * CC] = buffer[i * CC] = filter();
 
 			m_xpos = (m_xpos + 1) % m_xlen;

Modified: branches/soc-2011-pepper/intern/audaspace/FX/AUD_BaseIIRFilterReader.h
===================================================================
--- branches/soc-2011-pepper/intern/audaspace/FX/AUD_BaseIIRFilterReader.h	2011-06-14 12:06:21 UTC (rev 37476)
+++ branches/soc-2011-pepper/intern/audaspace/FX/AUD_BaseIIRFilterReader.h	2011-06-14 12:13:19 UTC (rev 37477)
@@ -57,11 +57,6 @@
 	const int m_ylen;
 
 	/**
-	 * The playback buffer.
-	 */
-	AUD_Buffer m_buffer;
-
-	/**
 	 * The last in samples array.
 	 */
 	sample_t* m_x;
@@ -112,7 +107,7 @@
 
 	virtual ~AUD_BaseIIRFilterReader();
 
-	virtual void read(int & length, sample_t* & buffer);
+	virtual void read(int & length, 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-14 12:06:21 UTC (rev 37476)
+++ branches/soc-2011-pepper/intern/audaspace/FX/AUD_DelayReader.cpp	2011-06-14 12:13:19 UTC (rev 37477)
@@ -36,8 +36,7 @@
 AUD_DelayReader::AUD_DelayReader(AUD_Reference<AUD_IReader> reader, float delay) :
 		AUD_EffectReader(reader),
 		m_delay(int(delay * reader->getSpecs().rate)),
-		m_remdelay(int(delay * reader->getSpecs().rate)),
-		m_empty(true)
+		m_remdelay(int(delay * reader->getSpecs().rate))
 {
 }
 
@@ -70,46 +69,28 @@
 	return m_reader->getPosition() + m_delay;
 }
 
-void AUD_DelayReader::read(int & length, sample_t* & buffer)
+void AUD_DelayReader::read(int & length, sample_t* buffer)
 {
 	if(m_remdelay > 0)
 	{
 		AUD_Specs specs = m_reader->getSpecs();
 		int samplesize = AUD_SAMPLE_SIZE(specs);
 
-		if(m_buffer.getSize() < length * samplesize)
-		{
-			m_buffer.resize(length * samplesize);
-			m_empty = false;
-		}
-
-		buffer = m_buffer.getBuffer();
-
 		if(length > m_remdelay)
 		{
-			if(!m_empty)
-				memset(buffer, 0, m_remdelay * samplesize);
+			memset(buffer, 0, m_remdelay * samplesize);
 
 			int len = length - m_remdelay;
-			sample_t* buf;
-			m_reader->read(len, buf);
+			m_reader->read(len, buffer + m_remdelay * specs.channels);
 
-			memcpy(buffer + m_remdelay * specs.channels,
-				   buf, len * samplesize);
-
 			if(len < length-m_remdelay)
 				length = m_remdelay + len;
 
 			m_remdelay = 0;
-			m_empty = false;
 		}
 		else
 		{
-			if(!m_empty)
-			{
-				memset(buffer, 0, length * samplesize);
-				m_empty = true;
-			}
+			memset(buffer, 0, length * samplesize);
 			m_remdelay -= length;
 		}
 	}

Modified: branches/soc-2011-pepper/intern/audaspace/FX/AUD_DelayReader.h
===================================================================
--- branches/soc-2011-pepper/intern/audaspace/FX/AUD_DelayReader.h	2011-06-14 12:06:21 UTC (rev 37476)
+++ branches/soc-2011-pepper/intern/audaspace/FX/AUD_DelayReader.h	2011-06-14 12:13:19 UTC (rev 37477)
@@ -42,11 +42,6 @@
 {
 private:
 	/**
-	 * The playback buffer.
-	 */
-	AUD_Buffer m_buffer;
-
-	/**
 	 * The delay level.
 	 */
 	const int m_delay;
@@ -56,11 +51,6 @@
 	 */
 	int m_remdelay;
 
-	/**
-	 * Whether the buffer is currently filled with zeros.
-	 */
-	bool m_empty;
-
 	// hide copy constructor and operator=
 	AUD_DelayReader(const AUD_DelayReader&);
 	AUD_DelayReader& operator=(const AUD_DelayReader&);
@@ -76,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, 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-14 12:06:21 UTC (rev 37476)
+++ branches/soc-2011-pepper/intern/audaspace/FX/AUD_DoubleReader.cpp	2011-06-14 12:13:19 UTC (rev 37477)
@@ -89,7 +89,7 @@
 	return m_reader1->getSpecs();
 }
 
-void AUD_DoubleReader::read(int & length, sample_t* & buffer)
+void AUD_DoubleReader::read(int & length, sample_t* buffer)
 {
 	if(!m_finished1)
 	{
@@ -98,23 +98,12 @@
 
 		if(len < length)
 		{
-			AUD_Specs specs = m_reader1->getSpecs();
-			int samplesize = AUD_SAMPLE_SIZE(specs);
+			const AUD_Specs specs = m_reader1->getSpecs();
 
-			if(m_buffer.getSize() < length * samplesize)
-				m_buffer.resize(length * samplesize);
-
-			sample_t* buf = buffer;
-			buffer = m_buffer.getBuffer();
-
-			memcpy(buffer, buf, len * samplesize);
-
 			len = length - len;
 			length -= len;
-			m_reader2->read(len, buf);
 
-			memcpy(buffer + length * specs.channels, buf,
-				   len * samplesize);
+			m_reader2->read(len, buffer + length * specs.channels);
 
 			length += len;
 

Modified: branches/soc-2011-pepper/intern/audaspace/FX/AUD_DoubleReader.h
===================================================================
--- branches/soc-2011-pepper/intern/audaspace/FX/AUD_DoubleReader.h	2011-06-14 12:06:21 UTC (rev 37476)
+++ branches/soc-2011-pepper/intern/audaspace/FX/AUD_DoubleReader.h	2011-06-14 12:13:19 UTC (rev 37477)
@@ -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, 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-14 12:06:21 UTC (rev 37476)
+++ branches/soc-2011-pepper/intern/audaspace/FX/AUD_EffectReader.cpp	2011-06-14 12:13:19 UTC (rev 37477)
@@ -65,7 +65,7 @@
 	return m_reader->getSpecs();
 }
 
-void AUD_EffectReader::read(int & length, sample_t* & buffer)
+void AUD_EffectReader::read(int & length, sample_t* buffer)
 {
 	m_reader->read(length, buffer);
 }

Modified: branches/soc-2011-pepper/intern/audaspace/FX/AUD_EffectReader.h
===================================================================
--- branches/soc-2011-pepper/intern/audaspace/FX/AUD_EffectReader.h	2011-06-14 12:06:21 UTC (rev 37476)
+++ branches/soc-2011-pepper/intern/audaspace/FX/AUD_EffectReader.h	2011-06-14 12:13:19 UTC (rev 37477)
@@ -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, 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-14 12:06:21 UTC (rev 37476)
+++ branches/soc-2011-pepper/intern/audaspace/FX/AUD_FaderReader.cpp	2011-06-14 12:13:19 UTC (rev 37477)
@@ -38,12 +38,11 @@
 		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, sample_t* buffer)
 {
 	int position = m_reader->getPosition();
 	AUD_Specs specs = m_reader->getSpecs();
@@ -55,46 +54,18 @@
 	{
 		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 @@
 					volume = 1.0f - volume;
 			}
 
-			buf[i] = buffer[i] * volume;
+			buffer[i] = buffer[i] * volume;
 		}
-
-		buffer = buf;
-		m_empty = false;
 	}
 }

Modified: branches/soc-2011-pepper/intern/audaspace/FX/AUD_FaderReader.h
===================================================================
--- branches/soc-2011-pepper/intern/audaspace/FX/AUD_FaderReader.h	2011-06-14 12:06:21 UTC (rev 37476)
+++ branches/soc-2011-pepper/intern/audaspace/FX/AUD_FaderReader.h	2011-06-14 12:13:19 UTC (rev 37477)
@@ -58,16 +58,6 @@
 	 */
 	const float m_length;
 
-	/**
-	 * The playback buffer.
-	 */
-	AUD_Buffer m_buffer;
-
-	/**
-	 * Whether the buffer is empty.
-	 */
-	bool m_empty;
-
 	// hide copy constructor and operator=
 	AUD_FaderReader(const AUD_FaderReader&);
 	AUD_FaderReader& operator=(const AUD_FaderReader&);
@@ -82,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, sample_t* buffer);
 };
 
 #endif //AUD_FADERREADER

Modified: branches/soc-2011-pepper/intern/audaspace/FX/AUD_LimiterReader.cpp

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list