00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00024
00025 #ifndef SFML_SOUNDRECORDER_HPP
00026 #define SFML_SOUNDRECORDER_HPP
00027
00029
00031 #include <SFML/System/Thread.hpp>
00032 #include <vector>
00033
00034
00035 namespace sf
00036 {
00041 class SFML_API SoundRecorder
00042 {
00043 public :
00044
00049 virtual ~SoundRecorder();
00050
00066 void Start(unsigned int sampleRate = 44100);
00067
00074 void Stop();
00075
00086 unsigned int GetSampleRate() const;
00087
00099 static bool IsAvailable();
00100
00101 protected :
00102
00109 SoundRecorder();
00110
00111 private :
00112
00124 virtual bool OnStart();
00125
00140 virtual bool OnProcessSamples(const Int16* samples, std::size_t samplesCount) = 0;
00141
00151 virtual void OnStop();
00152
00160 void Record();
00161
00170 void ProcessCapturedSamples();
00171
00178 void CleanUp();
00179
00181
00183 Thread myThread;
00184 std::vector<Int16> mySamples;
00185 unsigned int mySampleRate;
00186 bool myIsCapturing;
00187 };
00188
00189 }
00190
00191
00192 #endif // SFML_SOUNDRECORDER_HPP
00193
00194