From 2d0568c0484fa5abc74b084c094a325adb0bc452 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Mon, 19 Aug 2019 08:02:08 -0700 Subject: Allow using a variable channel stride for MixRowSamples --- alc/effects/reverb.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'alc/effects/reverb.cpp') diff --git a/alc/effects/reverb.cpp b/alc/effects/reverb.cpp index 08d1ea7b..6fafe241 100644 --- a/alc/effects/reverb.cpp +++ b/alc/effects/reverb.cpp @@ -424,14 +424,16 @@ struct ReverbState final : public EffectState { for(ALsizei c{0};c < NUM_LINES;c++) { std::fill_n(mTempLine.begin(), todo, 0.0f); - MixRowSamples(mTempLine.data(), A2B[c], mTempSamples, sEarlyOffset, todo); + MixRowSamples(mTempLine.data(), A2B[c], mTempSamples[0].data()+sEarlyOffset, + mTempSamples[0].size(), todo); MixSamples(mTempLine.data(), samplesOut, mEarly.CurrentGain[c], mEarly.PanGain[c], counter, offset, todo); } for(ALsizei c{0};c < NUM_LINES;c++) { std::fill_n(mTempLine.begin(), todo, 0.0f); - MixRowSamples(mTempLine.data(), A2B[c], mTempSamples, sLateOffset, todo); + MixRowSamples(mTempLine.data(), A2B[c], mTempSamples[0].data()+sLateOffset, + mTempSamples[0].size(), todo); MixSamples(mTempLine.data(), samplesOut, mLate.CurrentGain[c], mLate.PanGain[c], counter, offset, todo); } @@ -445,7 +447,8 @@ struct ReverbState final : public EffectState { for(ALsizei c{0};c < NUM_LINES;c++) { std::fill_n(mTempLine.begin(), todo, 0.0f); - MixRowSamples(mTempLine.data(), A2B[c], mTempSamples, sEarlyOffset, todo); + MixRowSamples(mTempLine.data(), A2B[c], mTempSamples[0].data()+sEarlyOffset, + mTempSamples[0].size(), todo); /* Apply scaling to the B-Format's HF response to "upsample" it to * higher-order output. @@ -459,7 +462,8 @@ struct ReverbState final : public EffectState { for(ALsizei c{0};c < NUM_LINES;c++) { std::fill_n(mTempLine.begin(), todo, 0.0f); - MixRowSamples(mTempLine.data(), A2B[c], mTempSamples, sLateOffset, todo); + MixRowSamples(mTempLine.data(), A2B[c], mTempSamples[0].data()+sLateOffset, + mTempSamples[0].size(), todo); const ALfloat hfscale{(c==0) ? mOrderScales[0] : mOrderScales[1]}; mAmbiSplitter[1][c].applyHfScale(mTempLine.data(), hfscale, todo); @@ -1457,7 +1461,8 @@ void ReverbState::process(const ALsizei samplesToDo, const FloatBufferLine *REST for(ALsizei c{0};c < NUM_LINES;c++) { std::fill_n(mTempLine.begin(), samplesToDo, 0.0f); - MixRowSamples(mTempLine.data(), B2A[c], {samplesIn, samplesIn+numInput}, 0, samplesToDo); + MixRowSamples(mTempLine.data(), {B2A[c], B2A[c]+numInput}, samplesIn->data(), + samplesIn->size(), samplesToDo); /* Band-pass the incoming samples and feed the initial delay line. */ mFilter[c].Lp.process(mTempLine.data(), mTempLine.data(), samplesToDo); -- cgit v1.2.3