| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 | 
							- #include "AudioPipeline.h"
 
- #include <type_traits>  // for remove_extent_t
 
- #include <utility>      // for move
 
- #include "AudioTransform.h"   // for AudioTransform
 
- #include "BellLogger.h"       // for AbstractLogger, BELL_LOG
 
- #include "TransformConfig.h"  // for TransformConfig
 
- using namespace bell;
 
- AudioPipeline::AudioPipeline(){
 
-     // this->headroomGainTransform = std::make_shared<Gain>(Channels::LEFT_RIGHT);
 
-     // this->transforms.push_back(this->headroomGainTransform);
 
- };
 
- void AudioPipeline::addTransform(std::shared_ptr<AudioTransform> transform) {
 
-   transforms.push_back(transform);
 
-   recalculateHeadroom();
 
- }
 
- void AudioPipeline::recalculateHeadroom() {
 
-   float headroom = 0.0f;
 
-   // Find largest headroom required by any transform down the chain, and apply it
 
-   for (auto transform : transforms) {
 
-     if (headroom < transform->calculateHeadroom()) {
 
-       headroom = transform->calculateHeadroom();
 
-     }
 
-   }
 
-   // headroomGainTransform->configure(-headroom);
 
- }
 
- void AudioPipeline::volumeUpdated(int volume) {
 
-   BELL_LOG(debug, "AudioPipeline", "Requested");
 
-   std::scoped_lock lock(this->accessMutex);
 
-   for (auto transform : transforms) {
 
-     transform->config->currentVolume = volume;
 
-     transform->reconfigure();
 
-   }
 
-   BELL_LOG(debug, "AudioPipeline", "Volume applied, DSP reconfigured");
 
- }
 
- std::unique_ptr<StreamInfo> AudioPipeline::process(
 
-     std::unique_ptr<StreamInfo> data) {
 
-   std::scoped_lock lock(this->accessMutex);
 
-   for (auto& transform : transforms) {
 
-     data = transform->process(std::move(data));
 
-   }
 
-   return data;
 
- }
 
 
  |