From 53fadf54977a3312db66e7e086c9b01d9162ae29 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Tue, 15 Mar 2016 05:08:05 -0700 Subject: 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. --- Alc/bformatdec.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 Alc/bformatdec.h (limited to 'Alc/bformatdec.h') 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 */ -- cgit v1.2.3