Overte C++ Documentation
PCMCodecManager.h
1 //
2 // PCMCodecManager.h
3 // plugins/pcmCodec/src
4 //
5 // Created by Brad Hefta-Gaub on 6/9/2016
6 // Copyright 2016 High Fidelity, Inc.
7 //
8 // Distributed under the Apache License, Version 2.0.
9 // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
10 //
11 
12 #ifndef hifi__PCMCodecManager_h
13 #define hifi__PCMCodecManager_h
14 
15 #include <plugins/CodecPlugin.h>
16 #include <AudioConstants.h>
17 
18 class PCMCodec : public CodecPlugin, public Encoder, public Decoder {
19  Q_OBJECT
20 
21 public:
22  // Plugin functions
23  bool isSupported() const override;
24  const QString getName() const override { return NAME; }
25 
26  void init() override;
27  void deinit() override;
28 
30  bool activate() override;
32  void deactivate() override;
33 
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;
38 
39  virtual void encode(const QByteArray& decodedBuffer, QByteArray& encodedBuffer) override {
40  encodedBuffer = decodedBuffer;
41  }
42 
43  virtual void decode(const QByteArray& encodedBuffer, QByteArray& decodedBuffer) override {
44  decodedBuffer = encodedBuffer;
45  }
46 
47  virtual void lostFrame(QByteArray& decodedBuffer) override {
48  decodedBuffer.resize(AudioConstants::NETWORK_FRAME_BYTES_STEREO);
49  memset(decodedBuffer.data(), 0, decodedBuffer.size());
50  }
51 
52 private:
53  static const char* NAME;
54 };
55 
56 class zLibCodec : public CodecPlugin, public Encoder, public Decoder {
57  Q_OBJECT
58 
59 public:
60  // Plugin functions
61  bool isSupported() const override;
62  const QString getName() const override { return NAME; }
63 
64  void init() override;
65  void deinit() override;
66 
68  bool activate() override;
70  void deactivate() override;
71 
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;
76 
77  virtual void encode(const QByteArray& decodedBuffer, QByteArray& encodedBuffer) override {
78  encodedBuffer = qCompress(decodedBuffer);
79  }
80 
81  virtual void decode(const QByteArray& encodedBuffer, QByteArray& decodedBuffer) override {
82  decodedBuffer = qUncompress(encodedBuffer);
83  }
84 
85  virtual void lostFrame(QByteArray& decodedBuffer) override {
86  decodedBuffer.resize(AudioConstants::NETWORK_FRAME_BYTES_STEREO);
87  memset(decodedBuffer.data(), 0, decodedBuffer.size());
88  }
89 
90 private:
91  static const char* NAME;
92 };
93 
94 #endif // hifi__PCMCodecManager_h