aboutsummaryrefslogtreecommitdiffstats
path: root/Alc/bformatdec.h
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 /Alc/bformatdec.h
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 'Alc/bformatdec.h')
-rw-r--r--Alc/bformatdec.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/Alc/bformatdec.h b/Alc/bformatdec.h
new file mode 100644
index 00000000..a322f41d
--- /dev/null
+++ b/Alc/bformatdec.h
@@ -0,0 +1,14 @@
+#ifndef BFORMATDEC_H
+#define BFORMATDEC_H
+
+#include "alMain.h"
+
+struct AmbDecConf;
+struct BFormatDec;
+
+struct BFormatDec *bformatdec_alloc();
+void bformatdec_free(struct BFormatDec *dec);
+void bformatdec_reset(struct BFormatDec *dec, const struct AmbDecConf *conf, ALuint chancount, ALuint srate, const ALuint chanmap[MAX_OUTPUT_CHANNELS]);
+void bformatdec_process(struct BFormatDec *dec, ALfloat (*restrict OutBuffer)[BUFFERSIZE], ALuint OutChannels, ALfloat (*restrict InSamples)[BUFFERSIZE], ALuint SamplesToDo);
+
+#endif /* BFORMATDEC_H */