aboutsummaryrefslogtreecommitdiffstats
path: root/alc/alc.cpp
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2020-06-15 02:05:10 -0700
committerChris Robinson <[email protected]>2020-06-15 02:13:14 -0700
commit540315b07c086f4c9af1c632e7464433332de4a8 (patch)
treebb425ee589097ed89fe374134666f18c50df52b3 /alc/alc.cpp
parentc951190d3a8bf03ef619c0b3f87388762a7c1743 (diff)
Handle the front stablizer with the B-Format decoder
Diffstat (limited to 'alc/alc.cpp')
-rw-r--r--alc/alc.cpp30
1 files changed, 2 insertions, 28 deletions
diff --git a/alc/alc.cpp b/alc/alc.cpp
index c996ecf8..e84b26e5 100644
--- a/alc/alc.cpp
+++ b/alc/alc.cpp
@@ -1870,7 +1870,6 @@ static ALCenum UpdateDeviceParams(ALCdevice *device, const int *attrList)
device->Bs2b = nullptr;
device->PostProcess = nullptr;
- device->Stablizer = nullptr;
device->Limiter = nullptr;
device->ChannelDelay.clear();
@@ -1986,39 +1985,14 @@ static ALCenum UpdateDeviceParams(ALCdevice *device, const int *attrList)
}
if(device->mHrtfState)
device->FixedLatency += nanoseconds{seconds{HRTF_DIRECT_DELAY}} / device->Frequency;
-
- /* Enable the stablizer only for formats that have front-left, front-right,
- * and front-center outputs.
- */
- switch(device->FmtChans)
+ if(auto *ambidec = device->AmbiDecoder.get())
{
- case DevFmtX51:
- case DevFmtX51Rear:
- case DevFmtX61:
- case DevFmtX71:
- if(GetConfigValueBool(device->DeviceName.c_str(), nullptr, "front-stablizer", 0))
+ if(ambidec->hasStablizer())
{
- auto stablizer = FrontStablizer::Create(device->channelsFromFmt());
- for(auto &buf : stablizer->DelayBuf)
- std::fill(buf.begin(), buf.end(), 0.0f);
-
- /* Initialize band-splitting filter for the mid signal, with a
- * crossover at 5khz (could be higher).
- */
- stablizer->MidFilter.init(5000.0f / static_cast<float>(device->Frequency));
-
- device->Stablizer = std::move(stablizer);
constexpr size_t StablizerDelay{FrontStablizer::DelayLength};
device->FixedLatency += nanoseconds{seconds{StablizerDelay}} / device->Frequency;
}
- break;
- case DevFmtMono:
- case DevFmtStereo:
- case DevFmtQuad:
- case DevFmtAmbi3D:
- break;
}
- TRACE("Front stablizer %s\n", device->Stablizer ? "enabled" : "disabled");
if(GetConfigValueBool(device->DeviceName.c_str(), nullptr, "dither", 1))
{