mirror of
https://github.com/JulianGro/overte.git
synced 2025-04-07 08:23:17 +02:00
make zlib and pcm codecs not actually allocate encoder/decoders
This commit is contained in:
parent
743576134f
commit
125aa6b337
3 changed files with 30 additions and 65 deletions
|
@ -14,11 +14,13 @@
|
|||
|
||||
class Encoder {
|
||||
public:
|
||||
virtual ~Encoder() { }
|
||||
virtual void encode(const QByteArray& decodedBuffer, QByteArray& encodedBuffer) = 0;
|
||||
};
|
||||
|
||||
class Decoder {
|
||||
public:
|
||||
virtual ~Decoder() { }
|
||||
virtual void decode(const QByteArray& encodedBuffer, QByteArray& decodedBuffer) = 0;
|
||||
|
||||
// numFrames - number of samples (mono) or sample-pairs (stereo)
|
||||
|
|
|
@ -37,55 +37,24 @@ bool PCMCodec::isSupported() const {
|
|||
return true;
|
||||
}
|
||||
|
||||
class PCMEncoder : public Encoder {
|
||||
public:
|
||||
virtual void encode(const QByteArray& decodedBuffer, QByteArray& encodedBuffer) override {
|
||||
encodedBuffer = decodedBuffer;
|
||||
}
|
||||
};
|
||||
|
||||
class PCMDecoder : public Decoder {
|
||||
public:
|
||||
virtual void decode(const QByteArray& encodedBuffer, QByteArray& decodedBuffer) override {
|
||||
decodedBuffer = encodedBuffer;
|
||||
}
|
||||
|
||||
virtual void trackLostFrames(int numFrames) override { }
|
||||
};
|
||||
|
||||
Encoder* PCMCodec::createEncoder(int sampleRate, int numChannels) {
|
||||
return new PCMEncoder();
|
||||
return this;
|
||||
}
|
||||
|
||||
Decoder* PCMCodec::createDecoder(int sampleRate, int numChannels) {
|
||||
return new PCMDecoder();
|
||||
return this;
|
||||
}
|
||||
|
||||
void PCMCodec::releaseEncoder(Encoder* encoder) {
|
||||
delete static_cast<PCMEncoder*>(encoder);
|
||||
// do nothing
|
||||
}
|
||||
|
||||
void PCMCodec::releaseDecoder(Decoder* decoder) {
|
||||
delete static_cast<PCMDecoder*>(decoder);
|
||||
// do nothing
|
||||
}
|
||||
|
||||
|
||||
class zLibEncoder : public Encoder {
|
||||
public:
|
||||
virtual void encode(const QByteArray& decodedBuffer, QByteArray& encodedBuffer) override {
|
||||
encodedBuffer = qCompress(decodedBuffer);
|
||||
}
|
||||
};
|
||||
|
||||
class zLibDecoder : public Decoder {
|
||||
public:
|
||||
virtual void decode(const QByteArray& encodedBuffer, QByteArray& decodedBuffer) override {
|
||||
decodedBuffer = qUncompress(encodedBuffer);
|
||||
}
|
||||
|
||||
virtual void trackLostFrames(int numFrames) override { }
|
||||
};
|
||||
|
||||
const QString zLibCodec::NAME = "zlib";
|
||||
|
||||
void zLibCodec::init() {
|
||||
|
@ -103,24 +72,23 @@ void zLibCodec::deactivate() {
|
|||
CodecPlugin::deactivate();
|
||||
}
|
||||
|
||||
|
||||
bool zLibCodec::isSupported() const {
|
||||
return true;
|
||||
}
|
||||
|
||||
Encoder* zLibCodec::createEncoder(int sampleRate, int numChannels) {
|
||||
return new zLibEncoder();
|
||||
return this;
|
||||
}
|
||||
|
||||
Decoder* zLibCodec::createDecoder(int sampleRate, int numChannels) {
|
||||
return new zLibDecoder();
|
||||
return this;
|
||||
}
|
||||
|
||||
void zLibCodec::releaseEncoder(Encoder* encoder) {
|
||||
delete static_cast<zLibEncoder*>(encoder);
|
||||
// do nothing... it wasn't allocated
|
||||
}
|
||||
|
||||
void zLibCodec::releaseDecoder(Decoder* decoder) {
|
||||
delete static_cast<zLibDecoder*>(decoder);
|
||||
// do nothing... it wasn't allocated
|
||||
}
|
||||
|
||||
|
|
|
@ -14,30 +14,7 @@
|
|||
|
||||
#include <plugins/CodecPlugin.h>
|
||||
|
||||
/*
|
||||
class Encoder {
|
||||
public:
|
||||
virtual void encode(const QByteArray& decodedBuffer, QByteArray& encodedBuffer) = 0;
|
||||
};
|
||||
|
||||
class Decoder {
|
||||
public:
|
||||
virtual void decode(const QByteArray& encodedBuffer, QByteArray& decodedBuffer) = 0;
|
||||
|
||||
// numFrames - number of samples (mono) or sample-pairs (stereo)
|
||||
virtual void trackLostFrames(int numFrames) = 0;
|
||||
};
|
||||
|
||||
class CodecPlugin : public Plugin {
|
||||
public:
|
||||
virtual Encoder* createEncoder(int sampleRate, int numChannels) = 0;
|
||||
virtual Decoder* createDecoder(int sampleRate, int numChannels) = 0;
|
||||
virtual void releaseEncoder(Encoder* encoder) = 0;
|
||||
virtual void releaseDecoder(Decoder* decoder) = 0;
|
||||
};
|
||||
*/
|
||||
|
||||
class PCMCodec : public CodecPlugin {
|
||||
class PCMCodec : public CodecPlugin, public Encoder, public Decoder {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
|
@ -58,11 +35,20 @@ public:
|
|||
virtual void releaseEncoder(Encoder* encoder) override;
|
||||
virtual void releaseDecoder(Decoder* decoder) override;
|
||||
|
||||
virtual void encode(const QByteArray& decodedBuffer, QByteArray& encodedBuffer) override {
|
||||
encodedBuffer = decodedBuffer;
|
||||
}
|
||||
virtual void decode(const QByteArray& encodedBuffer, QByteArray& decodedBuffer) override {
|
||||
decodedBuffer = encodedBuffer;
|
||||
}
|
||||
|
||||
virtual void trackLostFrames(int numFrames) override { }
|
||||
|
||||
private:
|
||||
static const QString NAME;
|
||||
};
|
||||
|
||||
class zLibCodec : public CodecPlugin {
|
||||
class zLibCodec : public CodecPlugin, public Encoder, public Decoder {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
|
@ -83,6 +69,15 @@ public:
|
|||
virtual void releaseEncoder(Encoder* encoder) override;
|
||||
virtual void releaseDecoder(Decoder* decoder) override;
|
||||
|
||||
virtual void encode(const QByteArray& decodedBuffer, QByteArray& encodedBuffer) override {
|
||||
encodedBuffer = qCompress(decodedBuffer);
|
||||
}
|
||||
|
||||
virtual void decode(const QByteArray& encodedBuffer, QByteArray& decodedBuffer) override {
|
||||
decodedBuffer = qUncompress(encodedBuffer);
|
||||
}
|
||||
|
||||
virtual void trackLostFrames(int numFrames) override { }
|
||||
|
||||
private:
|
||||
static const QString NAME;
|
||||
|
|
Loading…
Reference in a new issue