diff options
author | Chris Robinson <[email protected]> | 2016-01-28 00:02:46 -0800 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2016-01-28 00:02:46 -0800 |
commit | c1f87414c5452f595f78b7a52a7063a023ce2982 (patch) | |
tree | 7a8b3007d1cf3ff7b05edc45c5ac7962c3dbbbaf /OpenAL32/Include/alu.h | |
parent | 2fa3ae85c9a4050eab3a4f140fb6accd0a02ce85 (diff) |
Mix to multichannel for effects
This mixes to a 4-channel first-order ambisonics buffer. With ACN ordering and
N3D scaling, this makes it easy to remain compatible with effects that only
care about mono input since channel 0 is an unattenuated mono signal.
Diffstat (limited to 'OpenAL32/Include/alu.h')
-rw-r--r-- | OpenAL32/Include/alu.h | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/OpenAL32/Include/alu.h b/OpenAL32/Include/alu.h index 5f5493c5..63a03adc 100644 --- a/OpenAL32/Include/alu.h +++ b/OpenAL32/Include/alu.h @@ -13,6 +13,7 @@ #include "alMain.h" #include "alBuffer.h" #include "alFilter.h" +#include "alAuxEffectSlot.h" #include "hrtf.h" #include "align.h" @@ -34,6 +35,7 @@ extern "C" { struct ALsource; struct ALvoice; +struct ALeffectslot; /* The number of distinct scale and phase intervals within the filter table. */ @@ -164,6 +166,7 @@ typedef struct DirectParams { typedef struct SendParams { ALfloat (*OutBuffer)[BUFFERSIZE]; + ALuint OutChannels; ALboolean Moving; ALuint Counter; @@ -173,10 +176,7 @@ typedef struct SendParams { ALfilterState LowPass; ALfilterState HighPass; } Filters[MAX_INPUT_CHANNELS]; - - /* Gain control, which applies to each input channel to a single (mono) - * output buffer. */ - MixGains Gains[MAX_INPUT_CHANNELS]; + MixGains Gains[MAX_INPUT_CHANNELS][MAX_EFFECT_CHANNELS]; } SendParams; @@ -276,6 +276,8 @@ void aluInitMixer(void); ALvoid aluInitPanning(ALCdevice *Device); +void aluInitEffectPanning(struct ALeffectslot *slot); + /** * CalcDirectionCoeffs * |