aboutsummaryrefslogtreecommitdiffstats
path: root/Alc/ALc.c
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2016-07-31 07:46:38 -0700
committerChris Robinson <[email protected]>2016-07-31 07:46:38 -0700
commit4bcd2fbb2e79419c9b0973b7587df47d20004a5f (patch)
treef2bf8a131fa7e8ef065cb961498d8df3885b4a07 /Alc/ALc.c
parent01af7b432d775fc2eb054fbbd3f131481c636e2b (diff)
Add an option to specify the ambisonic output configuration
Diffstat (limited to 'Alc/ALc.c')
-rw-r--r--Alc/ALc.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/Alc/ALc.c b/Alc/ALc.c
index c8ed3dd9..1119a270 100644
--- a/Alc/ALc.c
+++ b/Alc/ALc.c
@@ -3427,6 +3427,7 @@ ALC_API ALCdevice* ALC_APIENTRY alcOpenDevice(const ALCchar *deviceName)
device->FmtType = DevFmtTypeDefault;
device->Frequency = DEFAULT_OUTPUT_RATE;
device->IsHeadphones = AL_FALSE;
+ device->AmbiFmt = AmbiFormat_Default;
device->NumUpdates = 4;
device->UpdateSize = 1024;
@@ -3544,6 +3545,18 @@ ALC_API ALCdevice* ALC_APIENTRY alcOpenDevice(const ALCchar *deviceName)
}
almtx_init(&device->BackendLock, almtx_plain);
+ if(ConfigValueStr(al_string_get_cstr(device->DeviceName), NULL, "ambi-format", &fmt))
+ {
+ if(strcasecmp(fmt, "fuma") == 0)
+ device->AmbiFmt = AmbiFormat_FuMa;
+ else if(strcasecmp(fmt, "acn+sn3d") == 0)
+ device->AmbiFmt = AmbiFormat_ACN_SN3D;
+ else if(strcasecmp(fmt, "acn+n3d") == 0)
+ device->AmbiFmt = AmbiFormat_ACN_N3D;
+ else
+ ERR("Unsupported ambi-format: %s\n", fmt);
+ }
+
if(DefaultEffect.type != AL_EFFECT_NULL)
{
device->DefaultSlot = (ALeffectslot*)device->_slot_mem;
@@ -3706,6 +3719,7 @@ ALC_API ALCdevice* ALC_APIENTRY alcCaptureOpenDevice(const ALCchar *deviceName,
return NULL;
}
device->IsHeadphones = AL_FALSE;
+ device->AmbiFmt = AmbiFormat_Default;
device->UpdateSize = samples;
device->NumUpdates = 1;
@@ -3903,6 +3917,7 @@ ALC_API ALCdevice* ALC_APIENTRY alcLoopbackOpenDeviceSOFT(const ALCchar *deviceN
device->FmtChans = DevFmtChannelsDefault;
device->FmtType = DevFmtTypeDefault;
device->IsHeadphones = AL_FALSE;
+ device->AmbiFmt = AmbiFormat_Default;
ConfigValueUInt(NULL, NULL, "sources", &device->SourcesMax);
if(device->SourcesMax == 0) device->SourcesMax = 256;