aboutsummaryrefslogtreecommitdiffstats
path: root/OpenAL32
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2016-03-15 05:08:05 -0700
committerChris Robinson <[email protected]>2016-03-15 05:08:05 -0700
commit53fadf54977a3312db66e7e086c9b01d9162ae29 (patch)
tree1a6696bd14200484ae4dfa955f32830deb3b2a46 /OpenAL32
parent64cb21cb9ff08d222d00eedc38fbc0970543bac3 (diff)
Add a dual-band ambisonic decoder
This uses a virtual B-Format buffer for mixing, and then uses a dual-band decoder for improved positional quality. This currently only works with first- order output since first-order input (from the AL_EXT_BFROMAT extension) would not sound correct when fed through a second- or third-order decoder. This also does not currently implement near-field compensation since near-field rendering effects are not implemented.
Diffstat (limited to 'OpenAL32')
-rw-r--r--OpenAL32/Include/alMain.h3
-rw-r--r--OpenAL32/Include/alu.h3
2 files changed, 5 insertions, 1 deletions
diff --git a/OpenAL32/Include/alMain.h b/OpenAL32/Include/alMain.h
index 86311761..3ce95801 100644
--- a/OpenAL32/Include/alMain.h
+++ b/OpenAL32/Include/alMain.h
@@ -476,6 +476,9 @@ struct ALCdevice_struct
// Stereo-to-binaural filter
struct bs2b *Bs2b;
+ /* High quality Ambisonic decoder */
+ struct BFormatDec *AmbiDecoder;
+
/* Rendering mode. */
enum RenderMode Render_Mode;
diff --git a/OpenAL32/Include/alu.h b/OpenAL32/Include/alu.h
index 08f25204..dfc9284f 100644
--- a/OpenAL32/Include/alu.h
+++ b/OpenAL32/Include/alu.h
@@ -33,6 +33,7 @@
extern "C" {
#endif
+struct AmbDecConf;
struct ALsource;
struct ALvoice;
struct ALeffectslot;
@@ -280,7 +281,7 @@ inline ALfloat resample_fir8(ALfloat val0, ALfloat val1, ALfloat val2, ALfloat v
void aluInitMixer(void);
-ALvoid aluInitPanning(ALCdevice *Device);
+ALvoid aluInitPanning(ALCdevice *Device, const struct AmbDecConf *conf);
void aluInitEffectPanning(struct ALeffectslot *slot);