00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00024
00026
00028 #include <SFML/Audio/SoundRecorder.h>
00029 #include <SFML/Audio/SoundRecorder.hpp>
00030 #include <SFML/Internal.h>
00031
00032
00033 struct sfSoundRecorder
00034 {
00035 typedef sfBool (*FuncType)(const sfInt16*, size_t, void*);
00036
00037 sfSoundRecorder(FuncType Callback, void* UserData) :
00038 This (&sfSoundRecorder::ProcessSamples, this),
00039 myCallback(Callback),
00040 myUserData(UserData)
00041 {
00042
00043 }
00044
00045 static bool ProcessSamples(const sf::Int16* Samples, std::size_t SamplesCount, void* UserData)
00046 {
00047
00048 sfSoundRecorder* Obj = static_cast<sfSoundRecorder*>(UserData);
00049
00050 return Obj->myCallback(Samples, SamplesCount, Obj->myUserData) == sfTrue;
00051 }
00052
00053 sf::SoundRecorder This;
00054 FuncType myCallback;
00055 void* myUserData;
00056 };
00057
00058
00063 sfSoundRecorder* sfSoundRecorder_Create(sfBool (*Callback)(const sfInt16*, size_t, void*), void* UserData)
00064 {
00065 return new sfSoundRecorder(Callback, UserData);
00066 }
00067
00068
00072 void sfSoundRecorder_Destroy(sfSoundRecorder* SoundRecorder)
00073 {
00074 delete SoundRecorder;
00075 }
00076
00077
00082 void sfSoundRecorder_Start(sfSoundRecorder* SoundRecorder, unsigned int SampleRate)
00083 {
00084 CSFML_CALL(SoundRecorder, Start(SampleRate));
00085 }
00086
00087
00091 void sfSoundRecorder_Stop(sfSoundRecorder* SoundRecorder)
00092 {
00093 CSFML_CALL(SoundRecorder, Stop());
00094 }
00095
00096
00100 unsigned int sfSoundRecorder_GetSampleRate(sfSoundRecorder* SoundRecorder)
00101 {
00102 CSFML_CALL_RETURN(SoundRecorder, GetSampleRate(), 0);
00103 }
00104
00105
00110 sfBool sfSoundRecorder_CanCapture()
00111 {
00112 return sf::SoundRecorder::CanCapture() ? sfTrue : sfFalse;
00113 }