aboutsummaryrefslogtreecommitdiffstats
path: root/Alc/mixer/hrtfbase.h
diff options
context:
space:
mode:
Diffstat (limited to 'Alc/mixer/hrtfbase.h')
-rw-r--r--Alc/mixer/hrtfbase.h138
1 files changed, 0 insertions, 138 deletions
diff --git a/Alc/mixer/hrtfbase.h b/Alc/mixer/hrtfbase.h
deleted file mode 100644
index a76bd62e..00000000
--- a/Alc/mixer/hrtfbase.h
+++ /dev/null
@@ -1,138 +0,0 @@
-#ifndef MIXER_HRTFBASE_H
-#define MIXER_HRTFBASE_H
-
-#include <algorithm>
-
-#include "alu.h"
-#include "../hrtf.h"
-#include "opthelpers.h"
-
-
-using ApplyCoeffsT = void(ALsizei Offset, float2 *RESTRICT Values, const ALsizei irSize,
- const HrirArray<ALfloat> &Coeffs, const ALfloat left, const ALfloat right);
-
-template<ApplyCoeffsT &ApplyCoeffs>
-inline void MixHrtfBase(FloatBufferLine &LeftOut, FloatBufferLine &RightOut,
- const ALfloat *InSamples, float2 *RESTRICT AccumSamples, const ALsizei OutPos,
- const ALsizei IrSize, MixHrtfFilter *hrtfparams, const ALsizei BufferSize)
-{
- ASSUME(OutPos >= 0);
- ASSUME(IrSize >= 4);
- ASSUME(BufferSize > 0);
-
- const auto &Coeffs = *hrtfparams->Coeffs;
- const ALfloat gainstep{hrtfparams->GainStep};
- const ALfloat gain{hrtfparams->Gain};
-
- ALsizei Delay[2]{
- HRTF_HISTORY_LENGTH - hrtfparams->Delay[0],
- HRTF_HISTORY_LENGTH - hrtfparams->Delay[1] };
- ASSUME(Delay[0] >= 0 && Delay[1] >= 0);
- ALfloat stepcount{0.0f};
- for(ALsizei i{0};i < BufferSize;++i)
- {
- const ALfloat g{gain + gainstep*stepcount};
- const ALfloat left{InSamples[Delay[0]++] * g};
- const ALfloat right{InSamples[Delay[1]++] * g};
- ApplyCoeffs(i, AccumSamples+i, IrSize, Coeffs, left, right);
-
- stepcount += 1.0f;
- }
-
- for(ALsizei i{0};i < BufferSize;++i)
- LeftOut[OutPos+i] += AccumSamples[i][0];
- for(ALsizei i{0};i < BufferSize;++i)
- RightOut[OutPos+i] += AccumSamples[i][1];
-
- hrtfparams->Gain = gain + gainstep*stepcount;
-}
-
-template<ApplyCoeffsT &ApplyCoeffs>
-inline void MixHrtfBlendBase(FloatBufferLine &LeftOut, FloatBufferLine &RightOut,
- const ALfloat *InSamples, float2 *RESTRICT AccumSamples, const ALsizei OutPos,
- const ALsizei IrSize, const HrtfFilter *oldparams, MixHrtfFilter *newparams,
- const ALsizei BufferSize)
-{
- const auto &OldCoeffs = oldparams->Coeffs;
- const ALfloat oldGain{oldparams->Gain};
- const ALfloat oldGainStep{-oldGain / static_cast<ALfloat>(BufferSize)};
- const auto &NewCoeffs = *newparams->Coeffs;
- const ALfloat newGainStep{newparams->GainStep};
-
- ASSUME(OutPos >= 0);
- ASSUME(IrSize >= 4);
- ASSUME(BufferSize > 0);
-
- ALsizei Delay[2]{
- HRTF_HISTORY_LENGTH - oldparams->Delay[0],
- HRTF_HISTORY_LENGTH - oldparams->Delay[1] };
- ASSUME(Delay[0] >= 0 && Delay[1] >= 0);
- ALfloat stepcount{0.0f};
- for(ALsizei i{0};i < BufferSize;++i)
- {
- const ALfloat g{oldGain + oldGainStep*stepcount};
- const ALfloat left{InSamples[Delay[0]++] * g};
- const ALfloat right{InSamples[Delay[1]++] * g};
- ApplyCoeffs(i, AccumSamples+i, IrSize, OldCoeffs, left, right);
-
- stepcount += 1.0f;
- }
-
- Delay[0] = HRTF_HISTORY_LENGTH - newparams->Delay[0];
- Delay[1] = HRTF_HISTORY_LENGTH - newparams->Delay[1];
- ASSUME(Delay[0] >= 0 && Delay[1] >= 0);
- stepcount = 0.0f;
- for(ALsizei i{0};i < BufferSize;++i)
- {
- const ALfloat g{newGainStep*stepcount};
- const ALfloat left{InSamples[Delay[0]++] * g};
- const ALfloat right{InSamples[Delay[1]++] * g};
- ApplyCoeffs(i, AccumSamples+i, IrSize, NewCoeffs, left, right);
-
- stepcount += 1.0f;
- }
-
- for(ALsizei i{0};i < BufferSize;++i)
- LeftOut[OutPos+i] += AccumSamples[i][0];
- for(ALsizei i{0};i < BufferSize;++i)
- RightOut[OutPos+i] += AccumSamples[i][1];
-
- newparams->Gain = newGainStep*stepcount;
-}
-
-template<ApplyCoeffsT &ApplyCoeffs>
-inline void MixDirectHrtfBase(FloatBufferLine &LeftOut, FloatBufferLine &RightOut,
- const al::span<const FloatBufferLine> InSamples, float2 *RESTRICT AccumSamples,
- DirectHrtfState *State, const ALsizei BufferSize)
-{
- ASSUME(BufferSize > 0);
-
- const ALsizei IrSize{State->IrSize};
- ASSUME(IrSize >= 4);
-
- auto chanstate = State->Chan.begin();
- for(const FloatBufferLine &input : InSamples)
- {
- const auto &Coeffs = chanstate->Coeffs;
-
- auto accum_iter = std::copy_n(chanstate->Values.begin(),
- chanstate->Values.size(), AccumSamples);
- std::fill_n(accum_iter, BufferSize, float2{});
-
- for(ALsizei i{0};i < BufferSize;++i)
- {
- const ALfloat insample{input[i]};
- ApplyCoeffs(i, AccumSamples+i, IrSize, Coeffs, insample, insample);
- }
- for(ALsizei i{0};i < BufferSize;++i)
- LeftOut[i] += AccumSamples[i][0];
- for(ALsizei i{0};i < BufferSize;++i)
- RightOut[i] += AccumSamples[i][1];
-
- std::copy_n(AccumSamples + BufferSize, chanstate->Values.size(),
- chanstate->Values.begin());
- ++chanstate;
- }
-}
-
-#endif /* MIXER_HRTFBASE_H */