Babel
Epitech's C++ VoIP project
ICodec.hpp
Go to the documentation of this file.
1 //
2 // Created by mgl on 10/11/21.
3 //
4 
5 #ifndef BABEL_ICODEC_HPP
6 #define BABEL_ICODEC_HPP
7 
8 namespace Babel {
9  class ICodec {
10  public:
11  virtual ~ICodec() = default;
12 
16  virtual int encode(const std::int16_t *pcm, unsigned char *data) = 0;
17 
19  virtual int encode(const float *pcm, unsigned char *data) = 0;
20 
25  virtual int decode(const unsigned char *data, std::int16_t *pcm, std::int32_t dataSize) = 0;
26 
28  virtual int decode(const unsigned char *data, float *pcm) = 0;
29 
31  [[nodiscard]] virtual std::int32_t getBitrate() const = 0;
32 
34  virtual void setBitrate(std::int32_t bitrate) = 0;
35 
37  [[nodiscard]] virtual int getChannel() const = 0;
38 
40  virtual void setChannel(int channel) = 0;
41 
43  [[nodiscard]] virtual int getApplication() const = 0;
44 
49  virtual void setApplication(int application) = 0;
50 
52  [[nodiscard]] virtual int getFrameSize() const = 0;
53 
56  virtual void setFrameSize(int frameSize) = 0;
57  };
58 }
59 
60 #endif //BABEL_ICODEC_HPP
Babel::ICodec
Definition: ICodec.hpp:9
Babel::ICodec::setFrameSize
virtual void setFrameSize(int frameSize)=0
sets the number of samples per channel Possible values are 120/480/960 (default)/1920/2880
Babel::ICodec::setChannel
virtual void setChannel(int channel)=0
sets the channel
Babel::ICodec::getChannel
virtual int getChannel() const =0
get the channels
Babel::ICodec::setBitrate
virtual void setBitrate(std::int32_t bitrate)=0
Sets the bitrate.
Babel::ICodec::~ICodec
virtual ~ICodec()=default
Babel::ICodec::getApplication
virtual int getApplication() const =0
get the application type
Babel::ICodec::getBitrate
virtual std::int32_t getBitrate() const =0
get the bitrate
Babel::ICodec::encode
virtual int encode(const std::int16_t *pcm, unsigned char *data)=0
Encodes exactly one frame of audio data.
Babel
Definition: IAudioManager.hpp:13
Babel::ICodec::getFrameSize
virtual int getFrameSize() const =0
get the frame size
Babel::ICodec::setApplication
virtual void setApplication(int application)=0
sets the Opus application mode Possible values are OPUS_APPLICATION_AUDIO (default) OPUS_APPLICATION_...
Babel::ICodec::decode
virtual int decode(const unsigned char *data, std::int16_t *pcm, std::int32_t dataSize)=0
Decodes exactly one frame of audio data.