diff options
author | Chris Robinson <[email protected]> | 2021-01-21 02:05:55 -0800 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2021-01-21 04:03:30 -0800 |
commit | 20f5e7c1fafcd40cdee2f7226ae81480ae049d1a (patch) | |
tree | 3b7e1aef92cefcbea1b9fca7f472d4831c0322cb /alc/bformatdec.cpp | |
parent | 92c653e5f0617befccf0bd44d035f821ec7cb1ba (diff) |
Avoid global constexpr arrays
Diffstat (limited to 'alc/bformatdec.cpp')
-rw-r--r-- | alc/bformatdec.cpp | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/alc/bformatdec.cpp b/alc/bformatdec.cpp index 64c45b68..9b2d9049 100644 --- a/alc/bformatdec.cpp +++ b/alc/bformatdec.cpp @@ -31,19 +31,18 @@ constexpr std::array<float,MaxAmbiOrder+1> Ambi3DDecoderHFScale3O{{ 5.89792205e-01f, 8.79693856e-01f, 1.00000000e+00f, 1.00000000e+00f }}; -inline auto GetDecoderHFScales(uint order) noexcept -> const std::array<float,MaxAmbiOrder+1>& +inline auto& GetDecoderHFScales(uint order) noexcept { if(order >= 3) return Ambi3DDecoderHFScale3O; if(order == 2) return Ambi3DDecoderHFScale2O; return Ambi3DDecoderHFScale; } -inline auto GetAmbiScales(AmbDecScale scaletype) noexcept - -> const std::array<float,MaxAmbiChannels>& +inline auto& GetAmbiScales(AmbDecScale scaletype) noexcept { - if(scaletype == AmbDecScale::FuMa) return AmbiScale::FromFuMa; - if(scaletype == AmbDecScale::SN3D) return AmbiScale::FromSN3D; - return AmbiScale::FromN3D; + if(scaletype == AmbDecScale::FuMa) return AmbiScale::FromFuMa(); + if(scaletype == AmbDecScale::SN3D) return AmbiScale::FromSN3D(); + return AmbiScale::FromN3D(); } } // namespace @@ -56,15 +55,15 @@ BFormatDec::BFormatDec(const AmbDecConf *conf, const bool allow_2band, const siz , mChannelDec{inchans} { const bool periphonic{(conf->ChanMask&AmbiPeriphonicMask) != 0}; - const std::array<float,MaxAmbiChannels> &coeff_scale = GetAmbiScales(conf->CoeffScale); + auto&& coeff_scale = GetAmbiScales(conf->CoeffScale); if(!mDualBand) { for(size_t j{0},k{0};j < mChannelDec.size();++j) { - const size_t acn{periphonic ? j : AmbiIndex::FromACN2D[j]}; + const size_t acn{periphonic ? j : AmbiIndex::FromACN2D()[j]}; if(!(conf->ChanMask&(1u<<acn))) continue; - const size_t order{AmbiIndex::OrderFromChannel[acn]}; + const size_t order{AmbiIndex::OrderFromChannel()[acn]}; const float gain{conf->HFOrderGain[order] / coeff_scale[acn]}; for(size_t i{0u};i < conf->NumSpeakers;++i) { @@ -83,9 +82,9 @@ BFormatDec::BFormatDec(const AmbDecConf *conf, const bool allow_2band, const siz const float ratio{std::pow(10.0f, conf->XOverRatio / 40.0f)}; for(size_t j{0},k{0};j < mChannelDec.size();++j) { - const size_t acn{periphonic ? j : AmbiIndex::FromACN2D[j]}; + const size_t acn{periphonic ? j : AmbiIndex::FromACN2D()[j]}; if(!(conf->ChanMask&(1u<<acn))) continue; - const size_t order{AmbiIndex::OrderFromChannel[acn]}; + const size_t order{AmbiIndex::OrderFromChannel()[acn]}; const float hfGain{conf->HFOrderGain[order] * ratio / coeff_scale[acn]}; const float lfGain{conf->LFOrderGain[order] / ratio / coeff_scale[acn]}; for(size_t i{0u};i < conf->NumSpeakers;++i) |