diff options
Diffstat (limited to 'alc/bformatdec.cpp')
-rw-r--r-- | alc/bformatdec.cpp | 26 |
1 files changed, 10 insertions, 16 deletions
diff --git a/alc/bformatdec.cpp b/alc/bformatdec.cpp index bef5ae20..d8f59ddc 100644 --- a/alc/bformatdec.cpp +++ b/alc/bformatdec.cpp @@ -78,12 +78,10 @@ BFormatDec::BFormatDec(const AmbDecConf *conf, const bool allow_2band, const ALu ALfloat (&mtx)[MAX_AMBI_CHANNELS] = mMatrix.Single[chanmap[i]]; for(size_t j{0},k{0};j < coeff_count;j++) { - const size_t l{periphonic ? j : AmbiIndex::From2D[j]}; - if(!(conf->ChanMask&(1u<<l))) continue; - mtx[j] = conf->HFMatrix[i][k] / coeff_scale[l] * - ((l>=9) ? conf->HFOrderGain[3] : - (l>=4) ? conf->HFOrderGain[2] : - (l>=1) ? conf->HFOrderGain[1] : conf->HFOrderGain[0]); + const size_t acn{periphonic ? j : AmbiIndex::From2D[j]}; + if(!(conf->ChanMask&(1u<<acn))) continue; + mtx[j] = conf->HFMatrix[i][k] / coeff_scale[acn] * + conf->HFOrderGain[AmbiIndex::OrderFromChannel[acn]]; ++k; } } @@ -99,16 +97,12 @@ BFormatDec::BFormatDec(const AmbDecConf *conf, const bool allow_2band, const ALu ALfloat (&mtx)[sNumBands][MAX_AMBI_CHANNELS] = mMatrix.Dual[chanmap[i]]; for(size_t j{0},k{0};j < coeff_count;j++) { - const size_t l{periphonic ? j : AmbiIndex::From2D[j]}; - if(!(conf->ChanMask&(1u<<l))) continue; - mtx[sHFBand][j] = conf->HFMatrix[i][k] / coeff_scale[l] * - ((l>=9) ? conf->HFOrderGain[3] : - (l>=4) ? conf->HFOrderGain[2] : - (l>=1) ? conf->HFOrderGain[1] : conf->HFOrderGain[0]) * ratio; - mtx[sLFBand][j] = conf->LFMatrix[i][k] / coeff_scale[l] * - ((l>=9) ? conf->LFOrderGain[3] : - (l>=4) ? conf->LFOrderGain[2] : - (l>=1) ? conf->LFOrderGain[1] : conf->LFOrderGain[0]) / ratio; + const size_t acn{periphonic ? j : AmbiIndex::From2D[j]}; + if(!(conf->ChanMask&(1u<<acn))) continue; + mtx[sHFBand][j] = conf->HFMatrix[i][k] / coeff_scale[acn] * + conf->HFOrderGain[AmbiIndex::OrderFromChannel[acn]] * ratio; + mtx[sLFBand][j] = conf->LFMatrix[i][k] / coeff_scale[acn] * + conf->LFOrderGain[AmbiIndex::OrderFromChannel[acn]] / ratio; ++k; } } |