From 125aa6b337c303a24f7183709e27cc0ea07d4272 Mon Sep 17 00:00:00 2001 From: Brad Hefta-Gaub Date: Mon, 11 Jul 2016 14:21:32 -0700 Subject: [PATCH] make zlib and pcm codecs not actually allocate encoder/decoders --- libraries/plugins/src/plugins/CodecPlugin.h | 2 + plugins/pcmCodec/src/PCMCodecManager.cpp | 48 ++++----------------- plugins/pcmCodec/src/PCMCodecManager.h | 45 +++++++++---------- 3 files changed, 30 insertions(+), 65 deletions(-) diff --git a/libraries/plugins/src/plugins/CodecPlugin.h b/libraries/plugins/src/plugins/CodecPlugin.h index 280853e37e..404f05e860 100644 --- a/libraries/plugins/src/plugins/CodecPlugin.h +++ b/libraries/plugins/src/plugins/CodecPlugin.h @@ -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) diff --git a/plugins/pcmCodec/src/PCMCodecManager.cpp b/plugins/pcmCodec/src/PCMCodecManager.cpp index 4a2380717d..315d0622ab 100644 --- a/plugins/pcmCodec/src/PCMCodecManager.cpp +++ b/plugins/pcmCodec/src/PCMCodecManager.cpp @@ -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(encoder); + // do nothing } void PCMCodec::releaseDecoder(Decoder* decoder) { - delete static_cast(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(encoder); + // do nothing... it wasn't allocated } void zLibCodec::releaseDecoder(Decoder* decoder) { - delete static_cast(decoder); + // do nothing... it wasn't allocated } diff --git a/plugins/pcmCodec/src/PCMCodecManager.h b/plugins/pcmCodec/src/PCMCodecManager.h index 6eb7f44c15..55d7c866f1 100644 --- a/plugins/pcmCodec/src/PCMCodecManager.h +++ b/plugins/pcmCodec/src/PCMCodecManager.h @@ -14,30 +14,7 @@ #include -/* -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;