aboutsummaryrefslogtreecommitdiffstats
path: root/alc
diff options
context:
space:
mode:
Diffstat (limited to 'alc')
-rw-r--r--alc/alc.cpp4
-rw-r--r--alc/alu.cpp3
-rw-r--r--alc/inprogext.h5
3 files changed, 12 insertions, 0 deletions
diff --git a/alc/alc.cpp b/alc/alc.cpp
index 9f2abc13..54162d14 100644
--- a/alc/alc.cpp
+++ b/alc/alc.cpp
@@ -869,6 +869,10 @@ constexpr struct {
DECL(AL_FORMAT_UHJ4CHN8_SOFT),
DECL(AL_FORMAT_UHJ4CHN16_SOFT),
DECL(AL_FORMAT_UHJ4CHN_FLOAT32_SOFT),
+ DECL(AL_STEREO_MODE_SOFT),
+ DECL(AL_NORMAL_SOFT),
+ DECL(AL_SUPER_STEREO_SOFT),
+ DECL(AL_SUPER_STEREO_WIDTH_SOFT),
DECL(AL_STOP_SOURCES_ON_DISCONNECT_SOFT),
};
diff --git a/alc/alu.cpp b/alc/alu.cpp
index 93e18c94..54bb7001 100644
--- a/alc/alu.cpp
+++ b/alc/alu.cpp
@@ -777,6 +777,9 @@ void CalcPanningAndFilters(Voice *voice, const float xpos, const float ypos, con
}
voice->mFlags &= ~(VoiceHasHrtf | VoiceHasNfc);
+ if(auto *decoder{voice->mDecoder.get()})
+ decoder->mWidthControl = props->EnhWidth;
+
if(IsAmbisonic(voice->mFmtChannels))
{
/* Special handling for B-Format and UHJ sources. */
diff --git a/alc/inprogext.h b/alc/inprogext.h
index 0875e5c9..99d997f5 100644
--- a/alc/inprogext.h
+++ b/alc/inprogext.h
@@ -87,6 +87,11 @@ ALCboolean ALC_APIENTRY alcReopenDeviceSOFT(ALCdevice *device, const ALCchar *de
#define AL_FORMAT_UHJ4CHN8_SOFT 0x19A8
#define AL_FORMAT_UHJ4CHN16_SOFT 0x19A9
#define AL_FORMAT_UHJ4CHN_FLOAT32_SOFT 0x19AA
+
+#define AL_STEREO_MODE_SOFT 0x19B0
+#define AL_NORMAL_SOFT 0x0000
+#define AL_SUPER_STEREO_SOFT 0x0001
+#define AL_SUPER_STEREO_WIDTH_SOFT 0x19B1
#endif
#ifndef AL_SOFT_hold_on_disconnect