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-2014 Laurent Gomila (laurent.gom@gmail.com)
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>
33#include <SFML/System/Time.hpp>
34#include <vector>
35#include <string>
36
37
38namespace sf
39{
45{
46public:
47
52 virtual ~SoundRecorder();
53
76 bool start(unsigned int sampleRate = 44100);
77
84 void stop();
85
96 unsigned int getSampleRate() const;
97
107 static std::vector<std::string> getAvailableDevices();
108
119 static std::string getDefaultDevice();
120
136 bool setDevice(const std::string& name);
137
144 const std::string& getDevice() const;
145
157 static bool isAvailable();
158
159protected:
160
168
186
198 virtual bool onStart();
199
214 virtual bool onProcessSamples(const Int16* samples, std::size_t sampleCount) = 0;
215
225 virtual void onStop();
226
227private:
228
236 void record();
237
246 void processCapturedSamples();
247
254 void cleanup();
255
257 // Member data
259 Thread m_thread;
260 std::vector<Int16> m_samples;
261 unsigned int m_sampleRate;
262 sf::Time m_processingInterval;
263 bool m_isCapturing;
264 std::string m_deviceName;
265};
266
267} // namespace sf
268
269
270#endif // SFML_SOUNDRECORDER_HPP
271
272
#define SFML_AUDIO_API
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.
void setProcessingInterval(sf::Time interval)
Set the processing interval.
bool start(unsigned int sampleRate=44100)
Start the capture.
virtual bool onStart()
Start capturing audio data.
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