[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [11007] branches/soc-2007-hcube/intern/ tinySND/blender: Added SND_GetMixRate and SND_NewSound is implemeted now.

Csaba Hruska csaba.hruska at gmail.com
Fri Jun 22 18:56:28 CEST 2007


Revision: 11007
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=11007
Author:   hcube
Date:     2007-06-22 18:56:27 +0200 (Fri, 22 Jun 2007)

Log Message:
-----------
Added SND_GetMixRate and SND_NewSound is implemeted now.

Modified Paths:
--------------
    branches/soc-2007-hcube/intern/tinySND/blender/SND_C-api.cpp
    branches/soc-2007-hcube/intern/tinySND/blender/SND_C-api.h

Modified: branches/soc-2007-hcube/intern/tinySND/blender/SND_C-api.cpp
===================================================================
--- branches/soc-2007-hcube/intern/tinySND/blender/SND_C-api.cpp	2007-06-22 13:38:15 UTC (rev 11006)
+++ branches/soc-2007-hcube/intern/tinySND/blender/SND_C-api.cpp	2007-06-22 16:56:27 UTC (rev 11007)
@@ -4,6 +4,8 @@
 #include "SND_C-api.h"
 #include "SND_Device.h"
 #include "SND_FXSample.h"
+#include "SND_FXMixer.h"
+#include "SND_FXSRC.h"
 
 #include "SDLDevice.h"
 #include "portaudioDevice.h"
@@ -13,8 +15,11 @@
 #pragma warning (disable:4786) // get rid of stupid stl-visual compiler debug warning
 #endif //WIN32
 
-static SND_Device *gDevice = 0;
-static std::vector<SND_FXSample*> gSamples;
+static std::vector<SND_FXSample*>	gSamples;
+static std::vector<SND_FXSRC*>		gSRCs;
+static SND_Device	*gDevice		= 0;
+static SND_FXMixer	*gFXMixerLeft	= 0;
+static SND_FXMixer	*gFXMixerRight	= 0;
 
 int SND_IsInitialized(void)
 {
@@ -30,6 +35,11 @@
     gDevice->initialize();
     
     gSamples.clear();
+
+	gFXMixerLeft	= new SND_FXMixer();
+	gFXMixerRight	= new SND_FXMixer();
+	gDevice->assignSoundToChannel( 0, gFXMixerLeft );
+	gDevice->assignSoundToChannel( 1, gFXMixerRight );
 }
 
 void SND_Finalize(void)
@@ -37,9 +47,21 @@
     assert( gDevice != 0 );
 
     gDevice->finalize();
+	
+	delete gFXMixerLeft;
+	delete gFXMixerRight;
     delete gDevice;
+	
+	gDevice = 0;
 }
 
+int SND_GetMixRate(void)
+{
+    assert( gDevice != 0 );
+	
+	return (int)gDevice->getSampleRate();
+}
+
 // sound handling
 
  // hides various DataProvider backends
@@ -50,7 +72,6 @@
 	// we'll try all DataProvider we have ill one can open the file, if any then return 0
 	// if load succed we attach the FXSample to a FXMixer and return with new FXSample handle
 	SND_DataProvider *dataProvider;
-	SND_FXSample *fxsample;
     
 	// sndfileProvider
 	dataProvider = new sndfileProvider( filename );
@@ -60,10 +81,21 @@
 		return (SND_SoundIHandle)0;
 	}
 
+	///////////////////////////////////////////////////////////////////
+	// DataProvider -> FXSound -> FXSRC -> FXMixer -> devices'channel
+	///////////////////////////////////////////////////////////////////
+	SND_FXSample *fxsample;
+	SND_FXSRC *fxsrc;
 	fxsample = new SND_FXSample( dataProvider, 1 );
+	fxsrc = new SND_FXSRC();
+	fxsrc->setInput( fxsample );
+	fxsrc->setSampleRate( gDevice->getSampleRate() );
+	
+	gSRCs.push_back( fxsrc );
 	gSamples.push_back( fxsample );
 
-	// FXSound -> FXSRC -> FXMixer -> devices'channel
+	gFXMixerLeft->addSound( fxsrc );
+	gFXMixerRight->addSound( fxsrc );
 	
 	return (SND_SoundIHandle)fxsample;
 }
@@ -80,10 +112,24 @@
 	assert( sound != 0 );
 }
 
+int SND_IsPlayingSound( SND_SoundIHandle sound )
+{
+	assert( sound != 0 );
+
+	SND_FXSample *sample = (SND_FXSample*)sound;
+	
+	return sample->getPlayState() == SND_FXSample::STARTED;
+}
+
 void SND_PlaySound( SND_SoundIHandle sound )
 {
 	assert( sound != 0 );
 
+	if( !gDevice->isEnabled() )
+	{
+		gDevice->enable();
+	}
+	
 	SND_FXSample *sample = (SND_FXSample*)sound;
 	sample->play();
 }

Modified: branches/soc-2007-hcube/intern/tinySND/blender/SND_C-api.h
===================================================================
--- branches/soc-2007-hcube/intern/tinySND/blender/SND_C-api.h	2007-06-22 13:38:15 UTC (rev 11006)
+++ branches/soc-2007-hcube/intern/tinySND/blender/SND_C-api.h	2007-06-22 16:56:27 UTC (rev 11007)
@@ -25,12 +25,14 @@
 extern int  SND_IsInitialized(void);
 extern void SND_Initialize(void);
 extern void SND_Finalize(void);
+extern int  SND_GetMixRate(void);
 
 // sound handling
 extern SND_SoundIHandle SND_NewSound( char *filename ); // hides various DataProvider backends
 extern SND_SoundIHandle SND_CloneSound( SND_SoundIHandle sound );
 extern void SND_DeleteSound( SND_SoundIHandle sound );
 
+extern int SND_IsPlayingSound( SND_SoundIHandle sound );
 extern void SND_PlaySound( SND_SoundIHandle sound );
 extern void SND_StopSound( SND_SoundIHandle sound );
 extern void SND_SeekSound( SND_SoundIHandle sound, int frameNum );
@@ -38,7 +40,6 @@
 
 extern void SND_StopAllSounds(void);
 
-
 #ifdef __cplusplus
 }
 #endif





More information about the Bf-blender-cvs mailing list