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 /OpenAL32 | |
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 'OpenAL32')
-rw-r--r-- | OpenAL32/Include/alMain.h | 3 | ||||
-rw-r--r-- | OpenAL32/Include/alu.h | 3 |
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); |