43 lines
1.3 KiB
C++
43 lines
1.3 KiB
C++
#pragma once
|
|
|
|
#include "Converter.h"
|
|
#include <opus/opus.h>
|
|
#include <mutex>
|
|
|
|
namespace tc {
|
|
namespace audio {
|
|
namespace codec {
|
|
class OpusConverter : public Converter {
|
|
public:
|
|
OpusConverter(size_t /* channels */, size_t /* sample rate */, size_t /* frame size */);
|
|
virtual ~OpusConverter();
|
|
|
|
bool valid() override;
|
|
|
|
bool initialize(std::string& /* error */, int /* application type */);
|
|
void finalize() override;
|
|
|
|
void reset_encoder() override;
|
|
void reset_decoder() override;
|
|
|
|
ssize_t encode(std::string & /* error */, const void * /* source */, void * /* target */, size_t /* target size */) override;
|
|
ssize_t decode(std::string & /* error */, const void */* source */, size_t /* source size */, void *pVoid1) override;
|
|
|
|
ssize_t decode_lost(std::string &string, size_t /* packets */) override;
|
|
|
|
size_t expected_encoded_length(size_t size) override;
|
|
private:
|
|
std::mutex coder_lock;
|
|
OpusDecoder* decoder = nullptr;
|
|
OpusEncoder* encoder = nullptr;
|
|
|
|
int _application_type = 0;
|
|
|
|
bool _finalize_encoder(std::string& /* error */);
|
|
bool _finalize_decoder(std::string& /* error */);
|
|
bool _initialize_encoder(std::string& /* error */);
|
|
bool _initialize_decoder(std::string& /* error */);
|
|
};
|
|
}
|
|
}
|
|
} |