aboutsummaryrefslogtreecommitdiffstats
path: root/alc
diff options
context:
space:
mode:
Diffstat (limited to 'alc')
-rw-r--r--alc/effects/convolution.cpp13
-rw-r--r--alc/effects/reverb.cpp33
2 files changed, 4 insertions, 42 deletions
diff --git a/alc/effects/convolution.cpp b/alc/effects/convolution.cpp
index 90220a50..f72695bd 100644
--- a/alc/effects/convolution.cpp
+++ b/alc/effects/convolution.cpp
@@ -194,8 +194,6 @@ struct ConvolutionState final : public EffectState {
struct ChannelData {
alignas(16) FloatBufferLine mBuffer{};
- float mHfScale{};
- BandSplitter mFilter{};
float Current[MAX_OUTPUT_CHANNELS]{};
float Target[MAX_OUTPUT_CHANNELS]{};
};
@@ -235,7 +233,6 @@ void ConvolutionState::UpsampleMix(const al::span<FloatBufferLine> samplesOut,
for(auto &chan : *mChans)
{
const al::span<float> src{chan.mBuffer.data(), samplesToDo};
- chan.mFilter.processHfScale(src, chan.mHfScale);
MixSamples(src, samplesOut, chan.Current, chan.Target, samplesToDo, 0);
}
}
@@ -280,10 +277,6 @@ void ConvolutionState::deviceUpdate(const DeviceBase *device, const Buffer &buff
(uint64_t{buffer.storage->mSampleLen}*device->Frequency+(buffer.storage->mSampleRate-1)) /
buffer.storage->mSampleRate);
- const BandSplitter splitter{device->mXOverFreq / static_cast<float>(device->Frequency)};
- for(auto &e : *mChans)
- e.mFilter = splitter;
-
mFilter.resize(numChannels, {});
mOutput.resize(numChannels, {});
@@ -418,13 +411,7 @@ void ConvolutionState::update(const ContextBase *context, const EffectSlot *slot
{
DeviceBase *device{context->mDevice};
if(device->mAmbiOrder > mAmbiOrder)
- {
mMix = &ConvolutionState::UpsampleMix;
- const auto scales = AmbiScale::GetHFOrderScales(mAmbiOrder, true);
- (*mChans)[0].mHfScale = scales[0];
- for(size_t i{1};i < mChans->size();++i)
- (*mChans)[i].mHfScale = scales[1];
- }
mOutTarget = target.Main->Buffer;
auto&& scales = GetAmbiScales(mAmbiScaling);
diff --git a/alc/effects/reverb.cpp b/alc/effects/reverb.cpp
index ea3367d0..72f58db5 100644
--- a/alc/effects/reverb.cpp
+++ b/alc/effects/reverb.cpp
@@ -453,8 +453,6 @@ struct ReverbState final : public EffectState {
bool mUpmixOutput{false};
- std::array<float,MaxAmbiOrder+1> mOrderScales{};
- std::array<std::array<BandSplitter,NUM_LINES>,2> mAmbiSplitter;
static void DoMixRow(const al::span<float> OutBuffer, const al::span<const float,4> Gains,
@@ -501,30 +499,19 @@ struct ReverbState final : public EffectState {
{
ASSUME(todo > 0);
- /* When upsampling, the B-Format conversion needs to be done separately
- * so the proper HF scaling can be applied to each B-Format channel.
- * The panning gains then pan and upsample the B-Format channels.
+ /* TODO: If HF scaling isn't needed for upsampling, the A-to-B-Format
+ * matrix can be included with the panning gains like non-upsampled
+ * output.
*/
const al::span<float> tmpspan{al::assume_aligned<16>(mTempLine.data()), todo};
for(size_t c{0u};c < NUM_LINES;c++)
{
DoMixRow(tmpspan, EarlyA2B[c], mEarlySamples[0].data(), mEarlySamples[0].size());
-
- /* Apply scaling to the B-Format's HF response to "upsample" it to
- * higher-order output.
- */
- const float hfscale{(c==0) ? mOrderScales[0] : mOrderScales[1]};
- mAmbiSplitter[0][c].processHfScale(tmpspan, hfscale);
-
MixSamples(tmpspan, samplesOut, mEarly.CurrentGain[c], mEarly.PanGain[c], todo, 0);
}
for(size_t c{0u};c < NUM_LINES;c++)
{
DoMixRow(tmpspan, LateA2B[c], mLateSamples[0].data(), mLateSamples[0].size());
-
- const float hfscale{(c==0) ? mOrderScales[0] : mOrderScales[1]};
- mAmbiSplitter[1][c].processHfScale(tmpspan, hfscale);
-
MixSamples(tmpspan, samplesOut, mLate.CurrentGain[c], mLate.PanGain[c], todo, 0);
}
}
@@ -683,19 +670,7 @@ void ReverbState::deviceUpdate(const DeviceBase *device, const Buffer&)
mDoFading = true;
mOffset = 0;
- if(device->mAmbiOrder > 1)
- {
- mUpmixOutput = true;
- mOrderScales = AmbiScale::GetHFOrderScales(1, true);
- }
- else
- {
- mUpmixOutput = false;
- mOrderScales.fill(1.0f);
- }
- mAmbiSplitter[0][0].init(device->mXOverFreq / frequency);
- std::fill(mAmbiSplitter[0].begin()+1, mAmbiSplitter[0].end(), mAmbiSplitter[0][0]);
- std::fill(mAmbiSplitter[1].begin(), mAmbiSplitter[1].end(), mAmbiSplitter[0][0]);
+ mUpmixOutput = (device->mAmbiOrder > 1);
}
/**************************************