aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--alc/uhjfilter.cpp5
-rw-r--r--alc/uhjfilter.h12
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