Update some arrays in preparation for fourth order support

master
Chris Robinson 2022-08-14 00:56:38 -07:00
parent 5f6b7f9166
commit 4f346caea3
2 changed files with 11 additions and 6 deletions

View File

@ -331,7 +331,8 @@ DecoderView MakeDecoderView(ALCdevice *device, const AmbDecConf *conf,
{
DecoderView ret{};
decoder.mOrder = (conf->ChanMask > Ambi2OrderMask) ? uint8_t{3} :
decoder.mOrder = (conf->ChanMask > Ambi3OrderMask) ? uint8_t{4} :
(conf->ChanMask > Ambi2OrderMask) ? uint8_t{3} :
(conf->ChanMask > Ambi1OrderMask) ? uint8_t{2} : uint8_t{1};
decoder.mIs3D = (conf->ChanMask&AmbiPeriphonicMask) != 0;
@ -704,6 +705,7 @@ void InitPanning(ALCdevice *device, const bool hqdec=false, const bool stablize=
TRACE("Enabling %s-band %s-order%s ambisonic decoder\n",
!dual_band ? "single" : "dual",
(decoder.mOrder > 3) ? "fourth" :
(decoder.mOrder > 2) ? "third" :
(decoder.mOrder > 1) ? "second" : "first",
decoder.mIs3D ? " periphonic" : "");

View File

@ -8,21 +8,24 @@
namespace {
constexpr std::array<float,MaxAmbiOrder+1> Ambi3DDecoderHFScale{{
1.00000000e+00f, 1.00000000e+00f
constexpr std::array<float,MaxAmbiOrder+1> Ambi3DDecoderHFScale10{{
1.000000000e+00f, 5.773502692e-01f
}};
constexpr std::array<float,MaxAmbiOrder+1> Ambi3DDecoderHFScale2O{{
7.45355990e-01f, 1.00000000e+00f, 1.00000000e+00f
9.128709292e-01f, 7.071067812e-01f, 3.651483717e-01f
}};
constexpr std::array<float,MaxAmbiOrder+1> Ambi3DDecoderHFScale3O{{
5.89792205e-01f, 8.79693856e-01f, 1.00000000e+00f, 1.00000000e+00f
8.340921354e-01f, 7.182670250e-01f, 5.107426573e-01f, 2.541870634e-01f
}};
/*constexpr std::array<float,MaxAmbiOrder+1> Ambi3DDecoderHFScale4O{{
1.727324867e-02f, 3.238734126e-02f, 8.245277297e-02f, 2.360733547e-01f, 7.127761153e-01f
}};*/
inline auto& GetDecoderHFScales(uint order) noexcept
{
if(order >= 3) return Ambi3DDecoderHFScale3O;
if(order == 2) return Ambi3DDecoderHFScale2O;
return Ambi3DDecoderHFScale;
return Ambi3DDecoderHFScale10;
}
} // namespace