diff options
-rw-r--r-- | alc/uhjfilter.cpp | 5 | ||||
-rw-r--r-- | alc/uhjfilter.h | 12 |
2 files changed, 8 insertions, 9 deletions
diff --git a/alc/uhjfilter.cpp b/alc/uhjfilter.cpp index c9e35914..2554aead 100644 --- a/alc/uhjfilter.cpp +++ b/alc/uhjfilter.cpp @@ -70,7 +70,7 @@ std::array<float,Uhj2Encoder::sFilterSize> GenerateFilter() } return ret; } -const auto PShiftCoeffs = GenerateFilter(); +alignas(16) const auto PShiftCoeffs = GenerateFilter(); void allpass_process(al::span<float> dst, const float *RESTRICT src) @@ -78,9 +78,8 @@ void allpass_process(al::span<float> dst, const float *RESTRICT src) for(float &output : dst) { #ifdef HAVE_SSE_INTRINSICS - constexpr size_t todo{PShiftCoeffs.size()>>2}; __m128 r4{_mm_setzero_ps()}; - for(size_t i{0};i < todo;i+=4) + for(size_t i{0};i < PShiftCoeffs.size();i+=4) { const __m128 coeffs{_mm_load_ps(&PShiftCoeffs[i])}; /* NOTE: This could alternatively be done with two unaligned loads diff --git a/alc/uhjfilter.h b/alc/uhjfilter.h index db8e55ec..362196a4 100644 --- a/alc/uhjfilter.h +++ b/alc/uhjfilter.h @@ -29,16 +29,16 @@ struct Uhj2Encoder { constexpr static size_t sFilterSize{128}; /* Delays for the unfiltered signal. */ - alignas(16) std::array<float,sFilterSize> mMidDelay; - alignas(16) std::array<float,sFilterSize> mSideDelay; + alignas(16) std::array<float,sFilterSize> mMidDelay{}; + alignas(16) std::array<float,sFilterSize> mSideDelay{}; /* History for the FIR filter. */ - alignas(16) std::array<float,sFilterSize*2 - 1> mSideHistory; + alignas(16) std::array<float,sFilterSize*2 - 1> mSideHistory{}; - alignas(16) std::array<float,BUFFERSIZE + sFilterSize*2> mTemp; + alignas(16) std::array<float,BUFFERSIZE + sFilterSize*2> mTemp{}; - alignas(16) std::array<float,BUFFERSIZE> mMid; - alignas(16) std::array<float,BUFFERSIZE> mSide; + alignas(16) std::array<float,BUFFERSIZE> mMid{}; + alignas(16) std::array<float,BUFFERSIZE> mSide{}; /** * Encodes a 2-channel UHJ (stereo-compatible) signal from a B-Format input |