aboutsummaryrefslogtreecommitdiffstats
path: root/al/buffer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'al/buffer.cpp')
-rw-r--r--al/buffer.cpp13
1 files changed, 6 insertions, 7 deletions
diff --git a/al/buffer.cpp b/al/buffer.cpp
index ae7bf0d9..951dca90 100644
--- a/al/buffer.cpp
+++ b/al/buffer.cpp
@@ -1073,21 +1073,20 @@ START_API_FUNC
if(ReadRef(albuf->ref) != 0) UNLIKELY
context->setError(AL_INVALID_OPERATION, "Modifying in-use buffer %u's ambisonic layout",
buffer);
- else if(value != AL_FUMA_SOFT && value != AL_ACN_SOFT) UNLIKELY
+ else if(const auto layout = AmbiLayoutFromEnum(value))
+ albuf->mAmbiLayout = layout.value();
+ else UNLIKELY
context->setError(AL_INVALID_VALUE, "Invalid unpack ambisonic layout %04x", value);
- else
- albuf->mAmbiLayout = AmbiLayoutFromEnum(value).value();
break;
case AL_AMBISONIC_SCALING_SOFT:
if(ReadRef(albuf->ref) != 0) UNLIKELY
context->setError(AL_INVALID_OPERATION, "Modifying in-use buffer %u's ambisonic scaling",
buffer);
- else if(value != AL_FUMA_SOFT && value != AL_SN3D_SOFT && value != AL_N3D_SOFT)
- UNLIKELY
+ else if(const auto scaling = AmbiScalingFromEnum(value))
+ albuf->mAmbiScaling = scaling.value();
+ else UNLIKELY
context->setError(AL_INVALID_VALUE, "Invalid unpack ambisonic scaling %04x", value);
- else
- albuf->mAmbiScaling = AmbiScalingFromEnum(value).value();
break;
case AL_UNPACK_AMBISONIC_ORDER_SOFT: