diff options
author | Chris Robinson <[email protected]> | 2016-03-15 05:08:05 -0700 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2016-03-15 05:08:05 -0700 |
commit | 53fadf54977a3312db66e7e086c9b01d9162ae29 (patch) | |
tree | 1a6696bd14200484ae4dfa955f32830deb3b2a46 /Alc/bformatdec.h | |
parent | 64cb21cb9ff08d222d00eedc38fbc0970543bac3 (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.h | 14 |
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 */ |