aboutsummaryrefslogtreecommitdiffstats
path: root/OpenAL32/Include/alu.h
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2016-01-28 00:02:46 -0800
committerChris Robinson <[email protected]>2016-01-28 00:02:46 -0800
commitc1f87414c5452f595f78b7a52a7063a023ce2982 (patch)
tree7a8b3007d1cf3ff7b05edc45c5ac7962c3dbbbaf /OpenAL32/Include/alu.h
parent2fa3ae85c9a4050eab3a4f140fb6accd0a02ce85 (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.h10
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
*