[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