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 : private Thread
00042 {
00043 public :
00044
00049 virtual ~SoundRecorder();
00050
00059 void Start(unsigned int SampleRate = 44100);
00060
00065 void Stop();
00066
00073 unsigned int GetSampleRate() const;
00074
00082 static bool CanCapture();
00083
00084 protected :
00085
00090 SoundRecorder();
00091
00092 private :
00093
00100 virtual bool OnStart();
00101
00111 virtual bool OnProcessSamples(const Int16* Samples, std::size_t SamplesCount) = 0;
00112
00117 virtual void OnStop();
00118
00123 virtual void Run();
00124
00129 void ProcessCapturedSamples();
00130
00135 void CleanUp();
00136
00138
00140 std::vector<Int16> mySamples;
00141 unsigned int mySampleRate;
00142 bool myIsCapturing;
00143 };
00144
00145 }
00146
00147
00148 #endif // SFML_SOUNDRECORDER_HPP