Gain.h 822 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #pragma once
  2. #include <cmath>
  3. #include <mutex>
  4. #include <iostream>
  5. #include "AudioTransform.h"
  6. namespace bell
  7. {
  8. class Gain : public bell::AudioTransform
  9. {
  10. private:
  11. float gainFactor = 1.0f;
  12. std::vector<int> channels;
  13. public:
  14. Gain();
  15. ~Gain() {};
  16. float gainDb = 0.0;
  17. void configure(std::vector<int> channels, float gainDB);
  18. std::unique_ptr<StreamInfo> process(std::unique_ptr<StreamInfo> data) override;
  19. void reconfigure() override {
  20. std::scoped_lock lock(this->accessMutex);
  21. float gain = config->getFloat("gain");
  22. this->channels = config->getChannels();
  23. if (gainDb == gain) {
  24. return;
  25. }
  26. this->configure(channels, gain);
  27. }
  28. };
  29. }