AudioPipeline.h 667 B

1234567891011121314151617181920212223242526272829
  1. #pragma once
  2. #include <memory> // for shared_ptr, unique_ptr
  3. #include <mutex> // for mutex
  4. #include <vector> // for vector
  5. #include "StreamInfo.h" // for StreamInfo
  6. namespace bell {
  7. class AudioTransform;
  8. class Gain;
  9. class AudioPipeline {
  10. private:
  11. std::shared_ptr<Gain> headroomGainTransform;
  12. public:
  13. AudioPipeline();
  14. ~AudioPipeline(){};
  15. std::mutex accessMutex;
  16. std::vector<std::shared_ptr<AudioTransform>> transforms;
  17. void recalculateHeadroom();
  18. void addTransform(std::shared_ptr<AudioTransform> transform);
  19. void volumeUpdated(int volume);
  20. std::unique_ptr<StreamInfo> process(std::unique_ptr<StreamInfo> data);
  21. };
  22. }; // namespace bell