Gain.cpp 669 B

12345678910111213141516171819202122232425262728293031
  1. #include "Gain.h"
  2. using namespace bell;
  3. Gain::Gain() : AudioTransform()
  4. {
  5. this->gainFactor = 1.0f;
  6. this->filterType = "gain";
  7. }
  8. void Gain::configure(std::vector<int> channels, float gainDB)
  9. {
  10. this->channels = channels;
  11. this->gainDb = gainDB;
  12. this->gainFactor = std::pow(10.0f, gainDB / 20.0f);
  13. }
  14. std::unique_ptr<StreamInfo> Gain::process(std::unique_ptr<StreamInfo> data)
  15. {
  16. std::scoped_lock lock(this->accessMutex);
  17. for (int i = 0; i < data->numSamples; i++)
  18. {
  19. // Apply gain to all channels
  20. for (auto &channel : channels)
  21. {
  22. data->data[channel][i] *= gainFactor;
  23. }
  24. }
  25. return data;
  26. }