#ifndef __OPUSENCODER_H__ #define __OPUSENCODER_H__ #include "opus/opus.h" #include #include namespace Opus { class Packet { public: uint8_t *data = nullptr; uint32_t byteSize = 0; }; class Encoder { public: ~Encoder(); bool open(int32_t samplerate, int32_t channels, uint32_t sampleSize); void close(); const Packet encode(const int16_t *pcm, int32_t framesize); private: OpusEncoder *m_encoder = nullptr; std::vector m_buffer; }; class Decoder { public: bool open(int32_t samplerate, int32_t channels); int32_t decode(const uint8_t *data, int32_t dataSize, int16_t *pcm, int32_t pcmBuffer); private: OpusDecoder *m_decoder = nullptr; }; } // namespace Opus #endif // __OPUSENCODER_H__