#pragma once #include // for unique_ptr #include // for scoped_lock #include // for vector #include "AudioTransform.h" // for AudioTransform #include "StreamInfo.h" // for StreamInfo #include "TransformConfig.h" // for TransformConfig namespace bell { class Gain : public bell::AudioTransform { private: float gainFactor = 1.0f; std::vector channels; public: Gain(); ~Gain(){}; float gainDb = 0.0; void configure(std::vector channels, float gainDB); std::unique_ptr process( std::unique_ptr data) override; void reconfigure() override { std::scoped_lock lock(this->accessMutex); float gain = config->getFloat("gain"); this->channels = config->getChannels(); if (gainDb == gain) { return; } this->configure(channels, gain); } }; } // namespace bell