94 lines · 3.0 KB · C
RawDownload
////  PCMCodecManager.h//  plugins/pcmCodec/src////  Created by Brad Hefta-Gaub on 6/9/2016//  Copyright 2016 High Fidelity, Inc.////  Distributed under the Apache License, Version 2.0.//  See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html// #ifndef hifi__PCMCodecManager_h#define hifi__PCMCodecManager_h #include <plugins/CodecPlugin.h>#include <AudioConstants.h> class PCMCodec : public CodecPlugin, public Encoder, public Decoder {    Q_OBJECT public:    // Plugin functions    bool isSupported() const override;    const QString getName() const override { return NAME; }     void init() override;    void deinit() override;     /// Called when a plugin is being activated for use.  May be called multiple times.    bool activate() override;    /// Called when a plugin is no longer being used.  May be called multiple times.    void deactivate() override;     virtual Encoder* createEncoder(int sampleRate, int numChannels) override;    virtual Decoder* createDecoder(int sampleRate, int numChannels) override;    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 lostFrame(QByteArray& decodedBuffer) override {        decodedBuffer.resize(AudioConstants::NETWORK_FRAME_BYTES_STEREO);        memset(decodedBuffer.data(), 0, decodedBuffer.size());    } private:    static const char* NAME;}; class zLibCodec : public CodecPlugin, public Encoder, public Decoder {    Q_OBJECT public:    // Plugin functions    bool isSupported() const override;    const QString getName() const override { return NAME; }     void init() override;    void deinit() override;     /// Called when a plugin is being activated for use.  May be called multiple times.    bool activate() override;    /// Called when a plugin is no longer being used.  May be called multiple times.    void deactivate() override;     virtual Encoder* createEncoder(int sampleRate, int numChannels) override;    virtual Decoder* createDecoder(int sampleRate, int numChannels) override;    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 lostFrame(QByteArray& decodedBuffer) override {        decodedBuffer.resize(AudioConstants::NETWORK_FRAME_BYTES_STEREO);        memset(decodedBuffer.data(), 0, decodedBuffer.size());    } private:    static const char* NAME;}; #endif // hifi__PCMCodecManager_h