front_stablizer.h 898 B

1234567891011121314151617181920212223242526272829303132
  1. #ifndef CORE_FRONT_STABLIZER_H
  2. #define CORE_FRONT_STABLIZER_H
  3. #include <array>
  4. #include <memory>
  5. #include "almalloc.h"
  6. #include "bufferline.h"
  7. #include "filters/splitter.h"
  8. #include "flexarray.h"
  9. struct FrontStablizer {
  10. explicit FrontStablizer(size_t numchans) : ChannelFilters{numchans} { }
  11. alignas(16) std::array<float,BufferLineSize> MidDirect{};
  12. alignas(16) std::array<float,BufferLineSize> Side{};
  13. alignas(16) std::array<float,BufferLineSize> Temp{};
  14. BandSplitter MidFilter;
  15. alignas(16) FloatBufferLine MidLF{};
  16. alignas(16) FloatBufferLine MidHF{};
  17. al::FlexArray<BandSplitter,16> ChannelFilters;
  18. static std::unique_ptr<FrontStablizer> Create(size_t numchans)
  19. { return std::unique_ptr<FrontStablizer>{new(FamCount(numchans)) FrontStablizer{numchans}}; }
  20. DEF_FAM_NEWDEL(FrontStablizer, ChannelFilters)
  21. };
  22. #endif /* CORE_FRONT_STABLIZER_H */