[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [30837] branches/soc-2010-nexyon/intern/ audaspace: Audaspace Refactor:

Joerg Mueller nexyon at gmail.com
Wed Jul 28 14:44:00 CEST 2010


Revision: 30837
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=30837
Author:   nexyon
Date:     2010-07-28 14:43:59 +0200 (Wed, 28 Jul 2010)

Log Message:
-----------
Audaspace Refactor:

* Removed whole Capabilities System
* Fixed Py API error strings
* Improved some Py API properties
* Minor other changes

Modified Paths:
--------------
    branches/soc-2010-nexyon/intern/audaspace/OpenAL/AUD_OpenALDevice.cpp
    branches/soc-2010-nexyon/intern/audaspace/OpenAL/AUD_OpenALDevice.h
    branches/soc-2010-nexyon/intern/audaspace/Python/AUD_PyAPI.cpp
    branches/soc-2010-nexyon/intern/audaspace/intern/AUD_C-API.cpp
    branches/soc-2010-nexyon/intern/audaspace/intern/AUD_FileFactory.cpp
    branches/soc-2010-nexyon/intern/audaspace/intern/AUD_I3DDevice.h
    branches/soc-2010-nexyon/intern/audaspace/intern/AUD_IDevice.h
    branches/soc-2010-nexyon/intern/audaspace/intern/AUD_NULLDevice.cpp
    branches/soc-2010-nexyon/intern/audaspace/intern/AUD_NULLDevice.h
    branches/soc-2010-nexyon/intern/audaspace/intern/AUD_SoftwareDevice.cpp
    branches/soc-2010-nexyon/intern/audaspace/intern/AUD_SoftwareDevice.h
    branches/soc-2010-nexyon/intern/audaspace/intern/AUD_Space.h

Removed Paths:
-------------
    branches/soc-2010-nexyon/intern/audaspace/intern/AUD_SourceCaps.h

Modified: branches/soc-2010-nexyon/intern/audaspace/OpenAL/AUD_OpenALDevice.cpp
===================================================================
--- branches/soc-2010-nexyon/intern/audaspace/OpenAL/AUD_OpenALDevice.cpp	2010-07-28 12:31:31 UTC (rev 30836)
+++ branches/soc-2010-nexyon/intern/audaspace/OpenAL/AUD_OpenALDevice.cpp	2010-07-28 12:43:59 UTC (rev 30837)
@@ -27,7 +27,6 @@
 #include "AUD_IFactory.h"
 #include "AUD_IReader.h"
 #include "AUD_ConverterReader.h"
-#include "AUD_SourceCaps.h"
 
 #include <cstring>
 #include <limits>
@@ -762,6 +761,20 @@
 	return result;
 }
 
+bool AUD_OpenALDevice::getKeep(AUD_Handle* handle)
+{
+	bool result = false;
+
+	lock();
+
+	if(isValid(handle))
+		result = ((AUD_OpenALHandle*)handle)->keep;
+
+	unlock();
+
+	return result;
+}
+
 bool AUD_OpenALDevice::setKeep(AUD_Handle* handle, bool keep)
 {
 	bool result = false;
@@ -910,213 +923,177 @@
 	pthread_mutex_unlock(&m_mutex);
 }
 
-/******************************************************************************/
-/**************************** Capabilities Code *******************************/
-/******************************************************************************/
+float AUD_OpenALDevice::getVolume() const
+{
+	float result;
+	alGetListenerf(AL_GAIN, &result);
+	return result;
+}
 
-bool AUD_OpenALDevice::checkCapability(int capability)
+void AUD_OpenALDevice::setVolume(float volume)
 {
-	return capability == AUD_CAPS_3D_DEVICE ||
-		   capability == AUD_CAPS_VOLUME ||
-		   capability == AUD_CAPS_SOURCE_VOLUME ||
-		   capability == AUD_CAPS_SOURCE_PITCH ||
-		   capability == AUD_CAPS_BUFFERED_FACTORY;
+	alListenerf(AL_GAIN, volume);
 }
 
-bool AUD_OpenALDevice::setCapability(int capability, void *value)
+float AUD_OpenALDevice::getVolume(AUD_Handle* handle)
 {
+	lock();
+	float result = std::numeric_limits<float>::quiet_NaN();
+	if(isValid(handle))
+		alGetSourcef(((AUD_OpenALHandle*)handle)->source,AL_GAIN, &result);
+	unlock();
+	return result;
+}
+
+bool AUD_OpenALDevice::setVolume(AUD_Handle* handle, float volume)
+{
+	lock();
+	bool result = isValid(handle);
+	if(result)
+		alSourcef(((AUD_OpenALHandle*)handle)->source, AL_GAIN, volume);
+	unlock();
+	return result;
+}
+
+float AUD_OpenALDevice::getPitch(AUD_Handle* handle)
+{
+	lock();
+	float result = std::numeric_limits<float>::quiet_NaN();
+	if(isValid(handle))
+		alGetSourcef(((AUD_OpenALHandle*)handle)->source,AL_PITCH, &result);
+	unlock();
+	return result;
+}
+
+bool AUD_OpenALDevice::setPitch(AUD_Handle* handle, float pitch)
+{
+	lock();
+	bool result = isValid(handle);
+	if(result)
+		alSourcef(((AUD_OpenALHandle*)handle)->source, AL_PITCH, pitch);
+	unlock();
+	return result;
+}
+
+/* AUD_XXX Temorary disabled
+
+bool AUD_OpenALDevice::bufferFactory(void *value)
+{
 	bool result = false;
-	switch(capability)
+	AUD_IFactory* factory = (AUD_IFactory*) value;
+
+	// load the factory into an OpenAL buffer
+	if(factory)
 	{
-	case AUD_CAPS_VOLUME:
-		alListenerf(AL_GAIN, *((float*)value));
-		return true;
-	case AUD_CAPS_SOURCE_VOLUME:
+		// check if the factory is already buffered
+		lock();
+		for(AUD_BFIterator i = m_bufferedFactories->begin();
+			i != m_bufferedFactories->end(); i++)
 		{
-			AUD_SourceCaps* caps = (AUD_SourceCaps*) value;
-			lock();
-			if(isValid(caps->handle))
+			if((*i)->factory == factory)
 			{
-				alSourcef(((AUD_OpenALHandle*)caps->handle)->source,
-						  AL_GAIN, caps->value);
 				result = true;
+				break;
 			}
-			unlock();
 		}
-		break;
-	case AUD_CAPS_SOURCE_PITCH:
-		{
-			AUD_SourceCaps* caps = (AUD_SourceCaps*) value;
-			lock();
-			if(isValid(caps->handle))
-			{
-				alSourcef(((AUD_OpenALHandle*)caps->handle)->source,
-						  AL_PITCH, caps->value);
-				result = true;
-			}
-			unlock();
-		}
-		break;
-	case AUD_CAPS_BUFFERED_FACTORY:
-		{
-			AUD_IFactory* factory = (AUD_IFactory*) value;
+		unlock();
+		if(result)
+			return result;
 
-			// load the factory into an OpenAL buffer
-			if(factory)
-			{
-				// check if the factory is already buffered
-				lock();
-				for(AUD_BFIterator i = m_bufferedFactories->begin();
-					i != m_bufferedFactories->end(); i++)
-				{
-					if((*i)->factory == factory)
-					{
-						result = true;
-						break;
-					}
-				}
-				unlock();
-				if(result)
-					return result;
+		AUD_IReader* reader = factory->createReader();
 
-				AUD_IReader* reader = factory->createReader();
+		if(reader == NULL)
+			return false;
 
-				if(reader == NULL)
-					return false;
+		AUD_DeviceSpecs specs = m_specs;
+		specs.specs = reader->getSpecs();
 
-				AUD_DeviceSpecs specs = m_specs;
-				specs.specs = reader->getSpecs();
+		if(m_specs.format != AUD_FORMAT_FLOAT32)
+			reader = new AUD_ConverterReader(reader, m_specs);
 
-				if(m_specs.format != AUD_FORMAT_FLOAT32)
-					reader = new AUD_ConverterReader(reader, m_specs);
+		ALenum format;
 
-				ALenum format;
+		if(!getFormat(format, specs.specs))
+		{
+			delete reader;
+			return false;
+		}
 
-				if(!getFormat(format, specs.specs))
-				{
-					delete reader;
-					return false;
-				}
+		// load into a buffer
+		lock();
+		alcSuspendContext(m_context);
 
-				// load into a buffer
-				lock();
-				alcSuspendContext(m_context);
+		AUD_OpenALBufferedFactory* bf = new AUD_OpenALBufferedFactory;
+		bf->factory = factory;
 
-				AUD_OpenALBufferedFactory* bf = new AUD_OpenALBufferedFactory;
-				bf->factory = factory;
+		try
+		{
+			alGenBuffers(1, &bf->buffer);
+			if(alGetError() != AL_NO_ERROR)
+				AUD_THROW(AUD_ERROR_OPENAL);
 
-				try
-				{
-					alGenBuffers(1, &bf->buffer);
-					if(alGetError() != AL_NO_ERROR)
-						AUD_THROW(AUD_ERROR_OPENAL);
+			try
+			{
+				sample_t* buf;
+				int length = reader->getLength();
 
-					try
-					{
-						sample_t* buf;
-						int length = reader->getLength();
-
-						reader->read(length, buf);
-						alBufferData(bf->buffer, format, buf,
-									 length * AUD_DEVICE_SAMPLE_SIZE(specs),
-									 specs.rate);
-						if(alGetError() != AL_NO_ERROR)
-							AUD_THROW(AUD_ERROR_OPENAL);
-					}
-					catch(AUD_Exception&)
-					{
-						alDeleteBuffers(1, &bf->buffer);
-						throw;
-					}
-				}
-				catch(AUD_Exception&)
-				{
-					delete bf;
-					delete reader;
-					alcProcessContext(m_context);
-					unlock();
-					return false;
-				}
-
-				m_bufferedFactories->push_back(bf);
-
-				alcProcessContext(m_context);
-				unlock();
+				reader->read(length, buf);
+				alBufferData(bf->buffer, format, buf,
+							 length * AUD_DEVICE_SAMPLE_SIZE(specs),
+							 specs.rate);
+				if(alGetError() != AL_NO_ERROR)
+					AUD_THROW(AUD_ERROR_OPENAL);
 			}
-			else
+			catch(AUD_Exception&)
 			{
-				// stop all playing and paused buffered sources
-				lock();
-				alcSuspendContext(m_context);
-
-				AUD_OpenALHandle* sound;
-				AUD_HandleIterator it = m_playingSounds->begin();
-				while(it != m_playingSounds->end())
-				{
-					sound = *it;
-					++it;
-
-					if(sound->isBuffered)
-						stop(sound);
-				}
-				alcProcessContext(m_context);
-
-				while(!m_bufferedFactories->empty())
-				{
-					alDeleteBuffers(1,
-									&(*(m_bufferedFactories->begin()))->buffer);
-					delete *m_bufferedFactories->begin();
-					m_bufferedFactories->erase(m_bufferedFactories->begin());
-				}
-				unlock();
+				alDeleteBuffers(1, &bf->buffer);
+				throw;
 			}
-
-			return true;
 		}
-		break;
-	}
-	return result;
-}
+		catch(AUD_Exception&)
+		{
+			delete bf;
+			delete reader;
+			alcProcessContext(m_context);
+			unlock();
+			return false;
+		}
 
-bool AUD_OpenALDevice::getCapability(int capability, void *value)
-{
-	bool result = false;
+		m_bufferedFactories->push_back(bf);
 
-	switch(capability)
+		alcProcessContext(m_context);
+		unlock();
+	}
+	else
 	{
-	case AUD_CAPS_VOLUME:
-		alGetListenerf(AL_GAIN, (float*)value);
-		return true;
-	case AUD_CAPS_SOURCE_VOLUME:
+		// stop all playing and paused buffered sources
+		lock();
+		alcSuspendContext(m_context);
+
+		AUD_OpenALHandle* sound;
+		AUD_HandleIterator it = m_playingSounds->begin();
+		while(it != m_playingSounds->end())
 		{
-			AUD_SourceCaps* caps = (AUD_SourceCaps*) value;
-			lock();
-			if(isValid(caps->handle))
-			{
-				alGetSourcef(((AUD_OpenALHandle*)caps->handle)->source,
-						  AL_GAIN, &caps->value);
-				result = true;
-			}
-			unlock();
+			sound = *it;
+			++it;
+
+			if(sound->isBuffered)
+				stop(sound);
 		}
-		break;
-	case AUD_CAPS_SOURCE_PITCH:
+		alcProcessContext(m_context);
+
+		while(!m_bufferedFactories->empty())
 		{
-			AUD_SourceCaps* caps = (AUD_SourceCaps*) value;
-			lock();
-			if(isValid(caps->handle))
-			{
-				alGetSourcef(((AUD_OpenALHandle*)caps->handle)->source,
-						  AL_PITCH, &caps->value);
-				result = true;
-			}
-			unlock();
+			alDeleteBuffers(1,
+							&(*(m_bufferedFactories->begin()))->buffer);
+			delete *m_bufferedFactories->begin();
+			m_bufferedFactories->erase(m_bufferedFactories->begin());
 		}
-		break;
+		unlock();
 	}
 
-	return result;
-}
+	return true;
+}*/
 
 /******************************************************************************/
 /**************************** 3D Device Code **********************************/

Modified: branches/soc-2010-nexyon/intern/audaspace/OpenAL/AUD_OpenALDevice.h
===================================================================
--- branches/soc-2010-nexyon/intern/audaspace/OpenAL/AUD_OpenALDevice.h	2010-07-28 12:31:31 UTC (rev 30836)
+++ branches/soc-2010-nexyon/intern/audaspace/OpenAL/AUD_OpenALDevice.h	2010-07-28 12:43:59 UTC (rev 30837)
@@ -145,15 +145,19 @@
 	virtual bool pause(AUD_Handle* handle);
 	virtual bool resume(AUD_Handle* handle);
 	virtual bool stop(AUD_Handle* handle);
+	virtual bool getKeep(AUD_Handle* handle);
 	virtual bool setKeep(AUD_Handle* handle, bool keep);
 	virtual bool seek(AUD_Handle* handle, float position);
 	virtual float getPosition(AUD_Handle* handle);
 	virtual AUD_Status getStatus(AUD_Handle* handle);
 	virtual void lock();
 	virtual void unlock();
-	virtual bool checkCapability(int capability);
-	virtual bool setCapability(int capability, void *value);
-	virtual bool getCapability(int capability, void *value);
+	virtual float getVolume() const;
+	virtual void setVolume(float volume);
+	virtual float getVolume(AUD_Handle* handle);
+	virtual bool setVolume(AUD_Handle* handle, float volume);
+	virtual float getPitch(AUD_Handle* handle);
+	virtual bool setPitch(AUD_Handle* handle, float pitch);
 
 	virtual AUD_Handle* play3D(AUD_IFactory* factory, bool keep = false);
 	virtual bool updateListener(AUD_3DData &data);

Modified: branches/soc-2010-nexyon/intern/audaspace/Python/AUD_PyAPI.cpp

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list