Loading...
Searching...
No Matches
SoundRecorder.hpp
Go to the documentation of this file.
1
2//
3// SFML - Simple and Fast Multimedia Library
4// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org)
5//
6// This software is provided 'as-is', without any express or implied warranty.
7// In no event will the authors be held liable for any damages arising from the use of this software.
8//
9// Permission is granted to anyone to use this software for any purpose,
10// including commercial applications, and to alter it and redistribute it freely,
11// subject to the following restrictions:
12//
13// 1. The origin of this software must not be misrepresented;
14// you must not claim that you wrote the original software.
15// If you use this software in a product, an acknowledgment
16// in the product documentation would be appreciated but is not required.
17//
18// 2. Altered source versions must be plainly marked as such,
19// and must not be misrepresented as being the original software.
20//
21// 3. This notice may not be removed or altered from any source distribution.
22//
24
25#ifndef SFML_SOUNDRECORDER_HPP
26#define SFML_SOUNDRECORDER_HPP
27
29// Headers
31#include <SFML/Audio/Export.hpp>
34#include <SFML/System/Time.hpp>
35#include <vector>
36#include <string>
37
38
39namespace sf
40{
46{
47public:
48
53 virtual ~SoundRecorder();
54
77 bool start(unsigned int sampleRate = 44100);
78
85 void stop();
86
97 unsigned int getSampleRate() const;
98
108 static std::vector<std::string> getAvailableDevices();
109
120 static std::string getDefaultDevice();
121
137 bool setDevice(const std::string& name);
138
145 const std::string& getDevice() const;
146
158 static bool isAvailable();
159
160protected:
161
169
187
199 virtual bool onStart();
200
215 virtual bool onProcessSamples(const Int16* samples, std::size_t sampleCount) = 0;
216
226 virtual void onStop();
227
228private:
229
237 void record();
238
247 void processCapturedSamples();
248
255 void cleanup();
256
258 // Member data
260 Thread m_thread;
261 std::vector<Int16> m_samples;
262 unsigned int m_sampleRate;
263 Time m_processingInterval;
264 bool m_isCapturing;
265 std::string m_deviceName;
266};
267
268} // namespace sf
269
270
271#endif // SFML_SOUNDRECORDER_HPP
272
273
#define SFML_AUDIO_API
AlResource()
Default constructor.
const std::string & getDevice() const
Get the name of the current audio capture device.
virtual bool onProcessSamples(const Int16 *samples, std::size_t sampleCount)=0
Process a new chunk of recorded samples.
static std::vector< std::string > getAvailableDevices()
Get a list of the names of all available audio capture devices.
SoundRecorder()
Default constructor.
bool start(unsigned int sampleRate=44100)
Start the capture.
virtual bool onStart()
Start capturing audio data.
void setProcessingInterval(Time interval)
Set the processing interval.
void stop()
Stop the capture.
bool setDevice(const std::string &name)
Set the audio capture device.
static bool isAvailable()
Check if the system supports audio capture.
virtual ~SoundRecorder()
destructor
static std::string getDefaultDevice()
Get the name of the default audio capture device.
unsigned int getSampleRate() const
Get the sample rate.
virtual void onStop()
Stop capturing audio data.
Utility class to manipulate threads.
Definition Thread.hpp:49
Represents a time value.
Definition Time.hpp:41
signed short Int16
Definition Config.hpp:174