From 096bed35fabf4d912ae62809cecb3819d2b91e5f Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 23 Oct 2021 11:37:46 -0700 Subject: Pass a parameter to aluInitRenderer to specify UHJ output --- alc/alc.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'alc/alc.cpp') diff --git a/alc/alc.cpp b/alc/alc.cpp index 44cc0f93..8f065bd2 100644 --- a/alc/alc.cpp +++ b/alc/alc.cpp @@ -1523,6 +1523,7 @@ ALCenum UpdateDeviceParams(ALCdevice *device, const int *attrList) ALCenum gainLimiter{device->LimiterState}; uint new_sends{device->NumAuxSends}; al::optional hrtfreq{}; + al::optional uhjreq{}; DevFmtChannels oldChans; DevFmtType oldType; int hrtf_id{-1}; @@ -1847,9 +1848,20 @@ ALCenum UpdateDeviceParams(ALCdevice *device, const int *attrList) else if(al::strcasecmp(mode, "auto") != 0) ERR("Unexpected stereo-mode: %s\n", mode); } + + if(auto encopt = device->configValue(nullptr, "stereo-encoding")) + { + const char *mode{encopt->c_str()}; + if(al::strcasecmp(mode, "uhj") == 0) + uhjreq = al::make_optional(true); + else if(al::strcasecmp(mode, "panpot") == 0) + uhjreq = al::make_optional(false); + else + ERR("Unexpected stereo-encoding: %s\n", mode); + } } - aluInitRenderer(device, hrtf_id, hrtfreq); + aluInitRenderer(device, hrtf_id, hrtfreq, uhjreq.value_or(false)); device->NumAuxSends = new_sends; TRACE("Max sources: %d (%d + %d), effect slots: %d, sends: %d\n", -- cgit v1.2.3