diff options
author | Chris Robinson <[email protected]> | 2016-04-14 21:50:36 -0700 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2016-04-14 21:50:36 -0700 |
commit | fb97822d8c3e8a3f712099a2ecfcf0ec5a43c32e (patch) | |
tree | f20de7c6ad6ecdcf79599ae05e870dd8ac61684d /OpenAL32 | |
parent | 21921cdaffbd6f66a8cdc452925ca407b830c406 (diff) |
Avoid unnecessary loops for setting up effect slot b-format buffer mixing
Diffstat (limited to 'OpenAL32')
-rw-r--r-- | OpenAL32/Include/alAuxEffectSlot.h | 2 | ||||
-rw-r--r-- | OpenAL32/Include/alMain.h | 4 | ||||
-rw-r--r-- | OpenAL32/Include/alu.h | 2 |
3 files changed, 7 insertions, 1 deletions
diff --git a/OpenAL32/Include/alAuxEffectSlot.h b/OpenAL32/Include/alAuxEffectSlot.h index 2c9a83e5..7c939efb 100644 --- a/OpenAL32/Include/alAuxEffectSlot.h +++ b/OpenAL32/Include/alAuxEffectSlot.h @@ -86,7 +86,7 @@ typedef struct ALeffectslot { ALuint id; ALuint NumChannels; - ChannelConfig AmbiCoeffs[MAX_EFFECT_CHANNELS]; + BFChannelConfig ChanMap[MAX_EFFECT_CHANNELS]; /* Wet buffer configuration is ACN channel order with N3D scaling: * * Channel 0 is the unattenuated mono signal. * * Channel 1 is OpenAL -X diff --git a/OpenAL32/Include/alMain.h b/OpenAL32/Include/alMain.h index 909c42cd..9ba6d050 100644 --- a/OpenAL32/Include/alMain.h +++ b/OpenAL32/Include/alMain.h @@ -407,6 +407,10 @@ enum RenderMode { #define MAX_AMBI_COEFFS ((MAX_AMBI_ORDER+1) * (MAX_AMBI_ORDER+1)) typedef ALfloat ChannelConfig[MAX_AMBI_COEFFS]; +typedef struct BFChannelConfig { + ALfloat Scale; + ALuint Index; +} BFChannelConfig; #define HRTF_HISTORY_BITS (6) diff --git a/OpenAL32/Include/alu.h b/OpenAL32/Include/alu.h index 81f1cb77..2869722b 100644 --- a/OpenAL32/Include/alu.h +++ b/OpenAL32/Include/alu.h @@ -338,6 +338,7 @@ void ComputeAmbientGains(const ChannelConfig *chancoeffs, ALuint numchans, ALflo * pre-calculated direction or angle coefficients. */ void ComputePanningGains(const ChannelConfig *chancoeffs, ALuint numchans, const ALfloat coeffs[MAX_AMBI_COEFFS], ALfloat ingain, ALfloat gains[MAX_OUTPUT_CHANNELS]); +void ComputePanningGainsBF(const BFChannelConfig *chanmap, ALuint numchans, const ALfloat coeffs[MAX_AMBI_COEFFS], ALfloat ingain, ALfloat gains[MAX_OUTPUT_CHANNELS]); /** * ComputeFirstOrderGains @@ -347,6 +348,7 @@ void ComputePanningGains(const ChannelConfig *chancoeffs, ALuint numchans, const * orient the sound samples. */ void ComputeFirstOrderGains(const ChannelConfig *chancoeffs, ALuint numchans, const ALfloat mtx[4], ALfloat ingain, ALfloat gains[MAX_OUTPUT_CHANNELS]); +void ComputeFirstOrderGainsBF(const BFChannelConfig *chanmap, ALuint numchans, const ALfloat mtx[4], ALfloat ingain, ALfloat gains[MAX_OUTPUT_CHANNELS]); ALvoid UpdateContextSources(ALCcontext *context); |