Documentation of SFML 2.6.0

Warning: this page refers to an old version of SFML. Click here to switch to the latest version.
Loading...
Searching...
No Matches
SoundRecorder.hpp
1
2//
3// SFML - Simple and Fast Multimedia Library
4// Copyright (C) 2007-2023 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>
32#include <SFML/Audio/AlResource.hpp>
33#include <SFML/System/Thread.hpp>
34#include <SFML/System/Time.hpp>
35#include <vector>
36#include <string>
37
38
39namespace sf
40{
45class SFML_AUDIO_API SoundRecorder : AlResource
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
160 void setChannelCount(unsigned int channelCount);
161
173 unsigned int getChannelCount() const;
174
186 static bool isAvailable();
187
188protected:
189
197
215
227 virtual bool onStart();
228
243 virtual bool onProcessSamples(const Int16* samples, std::size_t sampleCount) = 0;
244
254 virtual void onStop();
255
256private:
257
265 void record();
266
275 void processCapturedSamples();
276
283 void cleanup();
284
286 // Member data
288 Thread m_thread;
289 std::vector<Int16> m_samples;
290 unsigned int m_sampleRate;
291 Time m_processingInterval;
292 bool m_isCapturing;
293 std::string m_deviceName;
294 unsigned int m_channelCount;
295};
296
297} // namespace sf
298
299
300#endif // SFML_SOUNDRECORDER_HPP
301
302
Base class for classes that require an OpenAL context.
Definition: AlResource.hpp:41
Abstract base class for capturing sound data.
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.
unsigned int getChannelCount() const
Get the number of channels used by this recorder.
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.
void setChannelCount(unsigned int channelCount)
Set the channel count of the 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