Make an inline function to check for 2D ambisonic formats

master
Chris Robinson 2021-12-12 15:53:53 -08:00
parent 5e3fcb3a93
commit 953745d386
4 changed files with 11 additions and 11 deletions

View File

@ -777,11 +777,9 @@ void CalcPanningAndFilters(Voice *voice, const float xpos, const float ypos, con
}
voice->mFlags &= ~(VoiceHasHrtf | VoiceHasNfc);
if(voice->mFmtChannels == FmtBFormat2D || voice->mFmtChannels == FmtBFormat3D
|| voice->mFmtChannels == FmtUHJ2 || voice->mFmtChannels == FmtUHJ3
|| voice->mFmtChannels == FmtUHJ4 || voice->mFmtChannels == FmtSuperStereo)
if(IsAmbisonic(voice->mFmtChannels))
{
/* Special handling for B-Format sources. */
/* Special handling for B-Format and UHJ sources. */
if(Device->AvgSpeakerDist > 0.0f && voice->mFmtChannels != FmtUHJ2
&& voice->mFmtChannels != FmtSuperStereo)
@ -883,9 +881,7 @@ void CalcPanningAndFilters(Voice *voice, const float xpos, const float ypos, con
/* Convert the rotation matrix for input ordering and scaling, and
* whether input is 2D or 3D.
*/
const uint8_t *index_map{
(voice->mFmtChannels == FmtBFormat2D || voice->mFmtChannels == FmtUHJ2
|| voice->mFmtChannels == FmtUHJ3 || voice->mFmtChannels == FmtSuperStereo) ?
const uint8_t *index_map{Is2DAmbisonic(voice->mFmtChannels) ?
GetAmbi2DLayout(voice->mAmbiLayout).data() :
GetAmbiLayout(voice->mAmbiLayout).data()};

View File

@ -410,7 +410,7 @@ void ConvolutionState::update(const ContextBase *context, const EffectSlot *slot
(*mChans)[0].Target[lidx] = gain;
(*mChans)[1].Target[ridx] = gain;
}
else if(mChannels == FmtBFormat3D || mChannels == FmtBFormat2D)
else if(IsBFormat(mChannels))
{
DeviceBase *device{context->mDevice};
if(device->mAmbiOrder > mAmbiOrder)

View File

@ -66,6 +66,12 @@ constexpr bool IsUHJ(FmtChannels chans) noexcept
constexpr bool IsAmbisonic(FmtChannels chans) noexcept
{ return IsBFormat(chans) || IsUHJ(chans); }
constexpr bool Is2DAmbisonic(FmtChannels chans) noexcept
{
return chans == FmtBFormat2D || chans == FmtUHJ2 || chans == FmtUHJ3
|| chans == FmtSuperStereo;
}
using CallbackType = int(*)(void*, void*, int);

View File

@ -839,9 +839,7 @@ void Voice::prepare(DeviceBase *device)
*/
if(mAmbiOrder && device->mAmbiOrder > mAmbiOrder)
{
const uint8_t *OrderFromChan{(mFmtChannels == FmtBFormat2D
|| mFmtChannels == FmtUHJ2 || mFmtChannels == FmtUHJ3
|| mFmtChannels == FmtSuperStereo) ?
const uint8_t *OrderFromChan{Is2DAmbisonic(mFmtChannels) ?
AmbiIndex::OrderFrom2DChannel().data() : AmbiIndex::OrderFromChannel().data()};
const auto scales = AmbiScale::GetHFOrderScales(mAmbiOrder, device->mAmbiOrder);