Use 0/1 defines for backend and simd macros
[openal-soft.git] / core / front_stablizer.h
blob8eeb6d7476ab04a5a3d9b0d0e5099ca9e384516c
1 #ifndef CORE_FRONT_STABLIZER_H
2 #define CORE_FRONT_STABLIZER_H
4 #include <array>
5 #include <memory>
7 #include "almalloc.h"
8 #include "bufferline.h"
9 #include "filters/splitter.h"
10 #include "flexarray.h"
13 struct FrontStablizer {
14 FrontStablizer(size_t numchans) : ChannelFilters{numchans} { }
16 alignas(16) std::array<float,BufferLineSize> MidDirect{};
17 alignas(16) std::array<float,BufferLineSize> Side{};
18 alignas(16) std::array<float,BufferLineSize> Temp{};
20 BandSplitter MidFilter;
21 alignas(16) FloatBufferLine MidLF{};
22 alignas(16) FloatBufferLine MidHF{};
24 al::FlexArray<BandSplitter,16> ChannelFilters;
26 static std::unique_ptr<FrontStablizer> Create(size_t numchans)
27 { return std::unique_ptr<FrontStablizer>{new(FamCount(numchans)) FrontStablizer{numchans}}; }
29 DEF_FAM_NEWDEL(FrontStablizer, ChannelFilters)
32 #endif /* CORE_FRONT_STABLIZER_H */