Overte C++ Documentation
CodecPlugin.h
1 //
2 // CodecPlugin.h
3 // plugins/src/plugins
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 #pragma once
12 
13 #include "Plugin.h"
14 
15 class Encoder {
16 public:
17  virtual ~Encoder() { }
18  virtual void encode(const QByteArray& decodedBuffer, QByteArray& encodedBuffer) = 0;
19 };
20 
21 class Decoder {
22 public:
23  virtual ~Decoder() { }
24  virtual void decode(const QByteArray& encodedBuffer, QByteArray& decodedBuffer) = 0;
25 
26  virtual void lostFrame(QByteArray& decodedBuffer) = 0;
27 };
28 
29 class CodecPlugin : public Plugin {
30 public:
31  virtual Encoder* createEncoder(int sampleRate, int numChannels) = 0;
32  virtual Decoder* createDecoder(int sampleRate, int numChannels) = 0;
33  virtual void releaseEncoder(Encoder* encoder) = 0;
34  virtual void releaseDecoder(Decoder* decoder) = 0;
35 };