12 #ifndef hifi__PCMCodecManager_h
13 #define hifi__PCMCodecManager_h
15 #include <plugins/CodecPlugin.h>
16 #include <AudioConstants.h>
18 class PCMCodec :
public CodecPlugin,
public Encoder,
public Decoder {
23 bool isSupported()
const override;
24 const QString getName()
const override {
return NAME; }
27 void deinit()
override;
30 bool activate()
override;
32 void deactivate()
override;
34 virtual Encoder* createEncoder(
int sampleRate,
int numChannels)
override;
35 virtual Decoder* createDecoder(
int sampleRate,
int numChannels)
override;
36 virtual void releaseEncoder(Encoder* encoder)
override;
37 virtual void releaseDecoder(Decoder* decoder)
override;
39 virtual void encode(
const QByteArray& decodedBuffer, QByteArray& encodedBuffer)
override {
40 encodedBuffer = decodedBuffer;
43 virtual void decode(
const QByteArray& encodedBuffer, QByteArray& decodedBuffer)
override {
44 decodedBuffer = encodedBuffer;
47 virtual void lostFrame(QByteArray& decodedBuffer)
override {
48 decodedBuffer.resize(AudioConstants::NETWORK_FRAME_BYTES_STEREO);
49 memset(decodedBuffer.data(), 0, decodedBuffer.size());
53 static const char* NAME;
56 class zLibCodec :
public CodecPlugin,
public Encoder,
public Decoder {
61 bool isSupported()
const override;
62 const QString getName()
const override {
return NAME; }
65 void deinit()
override;
68 bool activate()
override;
70 void deactivate()
override;
72 virtual Encoder* createEncoder(
int sampleRate,
int numChannels)
override;
73 virtual Decoder* createDecoder(
int sampleRate,
int numChannels)
override;
74 virtual void releaseEncoder(Encoder* encoder)
override;
75 virtual void releaseDecoder(Decoder* decoder)
override;
77 virtual void encode(
const QByteArray& decodedBuffer, QByteArray& encodedBuffer)
override {
78 encodedBuffer = qCompress(decodedBuffer);
81 virtual void decode(
const QByteArray& encodedBuffer, QByteArray& decodedBuffer)
override {
82 decodedBuffer = qUncompress(encodedBuffer);
85 virtual void lostFrame(QByteArray& decodedBuffer)
override {
86 decodedBuffer.resize(AudioConstants::NETWORK_FRAME_BYTES_STEREO);
87 memset(decodedBuffer.data(), 0, decodedBuffer.size());
91 static const char* NAME;