Babel
Epitech's C++ VoIP project
PortAudio.hpp
Go to the documentation of this file.
1 /*
2 ** EPITECH PROJECT, 2021
3 ** PortAudio
4 ** File description:
5 ** encapsulation of the portaudio library for sound management
6 */
7 
8 #pragma once
9 
10 #include "IAudioManager.hpp"
11 #include <portaudio.h>
12 #include <mutex>
13 
14 #define PA_SAMPLE_TYPE paInt16
15 
16 namespace Babel {
17  class PortAudio : public IAudioManager {
18  public:
19  PortAudio();
20 
21  ~PortAudio() override;
22 
24  void setInputChannelsNumber(int32_t) override;
25 
27  void setOutputChannelsNumber(int32_t) override;
28 
30  int32_t getInputChannelsNumber() const override;
31 
33  int32_t getOutputChannelsNumber() const override;
34 
36  void setSampleRate(int32_t) override;
37 
39  int32_t getSampleRate() const override;
40 
42  int32_t getRecordTime() const override;
43 
45  void setRecordTime(int32_t) override;
46 
48  int32_t getFramesPerBuffer() const override;
49 
51  void setFramesPerBuffer(int32_t) override;
52 
54  void openStream() override;
55 
57  void startStream() override;
58 
60  void stopStream() override;
61 
63  void closeStream() override;
64 
66  std::vector<int16_t> readStream() override;
67 
69  void writeStream(std::vector<int16_t> &) override;
70 
71  private:
73  PaStream *_stream;
81  int32_t _recordtime;
83  int32_t _samplerate;
87  std::mutex _mutex;
88  };
89 }
Babel::PortAudio::~PortAudio
~PortAudio() override
Definition: PortAudio.cpp:179
Babel::PortAudio::getSampleRate
int32_t getSampleRate() const override
get the current samplerate
Definition: PortAudio.cpp:66
Babel::PortAudio::_recordtime
int32_t _recordtime
record number in seconds for one frame
Definition: PortAudio.hpp:81
Babel::PortAudio::getOutputChannelsNumber
int32_t getOutputChannelsNumber() const override
get the number of channels of Output Device for future streams
Definition: PortAudio.cpp:48
Babel::PortAudio::setRecordTime
void setRecordTime(int32_t) override
get the record time for readStreams
Definition: PortAudio.cpp:70
Babel::PortAudio::_inputNumberChannels
int32_t _inputNumberChannels
number of channels for default input device
Definition: PortAudio.hpp:77
Babel::PortAudio::openStream
void openStream() override
Open stream to input and output sounds.
Definition: PortAudio.cpp:79
Babel::PortAudio::getInputChannelsNumber
int32_t getInputChannelsNumber() const override
get the number of channels of Input Device for future streams
Definition: PortAudio.cpp:44
Babel::PortAudio::setInputChannelsNumber
void setInputChannelsNumber(int32_t) override
set the number of channels for future streams
Definition: PortAudio.cpp:39
Babel::PortAudio::startStream
void startStream() override
Start a stream.
Definition: PortAudio.cpp:107
Babel
Definition: IAudioManager.hpp:13
Babel::PortAudio
Definition: PortAudio.hpp:17
Babel::PortAudio::closeStream
void closeStream() override
Close current stream.
Definition: PortAudio.cpp:138
Babel::PortAudio::_framesPerBuffer
int32_t _framesPerBuffer
frames per buffer for readStream
Definition: PortAudio.hpp:75
Babel::IAudioManager
Audio Module Interface.
Definition: IAudioManager.hpp:15
Babel::PortAudio::stopStream
void stopStream() override
Stop a stream.
Definition: PortAudio.cpp:123
Babel::PortAudio::_samplerate
int32_t _samplerate
sample rate for input and output streams
Definition: PortAudio.hpp:83
Babel::PortAudio::getRecordTime
int32_t getRecordTime() const override
get the record time for readStreams
Definition: PortAudio.cpp:75
Babel::PortAudio::_outputNumberChannels
int32_t _outputNumberChannels
number of channels for default output device
Definition: PortAudio.hpp:79
Babel::PortAudio::writeStream
void writeStream(std::vector< int16_t > &) override
Write an array of int16_t to current stream.
Definition: PortAudio.cpp:166
Babel::PortAudio::PortAudio
PortAudio()
Definition: PortAudio.cpp:12
Babel::PortAudio::_stream
PaStream * _stream
stream for sound input and output
Definition: PortAudio.hpp:73
Babel::PortAudio::setFramesPerBuffer
void setFramesPerBuffer(int32_t) override
get the frame per buffer for readStreams
Definition: PortAudio.cpp:52
Babel::PortAudio::readStream
std::vector< int16_t > readStream() override
Read an array of int16_t from current stream.
Definition: PortAudio.cpp:150
Babel::PortAudio::_streamStopped
bool _streamStopped
True if the stream doesn't exist or has not been started.
Definition: PortAudio.hpp:85
Babel::PortAudio::getFramesPerBuffer
int32_t getFramesPerBuffer() const override
get the frame per buffer value for readStreams
Definition: PortAudio.cpp:57
Babel::PortAudio::_mutex
std::mutex _mutex
class mutex
Definition: PortAudio.hpp:87
Babel::PortAudio::setOutputChannelsNumber
void setOutputChannelsNumber(int32_t) override
set the number of channels for future streams
Definition: PortAudio.cpp:34
Babel::PortAudio::setSampleRate
void setSampleRate(int32_t) override
set the samplerate for future streams
Definition: PortAudio.cpp:61
IAudioManager.hpp