aboutsummaryrefslogtreecommitdiffstats
path: root/al
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2020-04-04 03:10:01 -0700
committerChris Robinson <[email protected]>2020-04-04 03:10:01 -0700
commita0b7638d635d4f583ecc1a48c193629868cf684a (patch)
tree09080d1fc980c2ddde6a1fdf61ccc62359b9901f /al
parentfc906c97f52fd13549dfdfae229d0dc6d60a2865 (diff)
Add an extension to change a buffer's unpack ambisonic order
Diffstat (limited to 'al')
-rw-r--r--al/buffer.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/al/buffer.cpp b/al/buffer.cpp
index 4acd1158..d989a37d 100644
--- a/al/buffer.cpp
+++ b/al/buffer.cpp
@@ -1190,6 +1190,13 @@ START_API_FUNC
albuf->AmbiScaling = value;
break;
+ case AL_UNPACK_AMBISONIC_ORDER_SOFT:
+ if UNLIKELY(value < 1 || value > 14)
+ context->setError(AL_INVALID_VALUE, "Invalid unpack ambisonic order %d", value);
+ else
+ albuf->UnpackAmbiOrder = static_cast<ALuint>(value);
+ break;
+
default:
context->setError(AL_INVALID_ENUM, "Invalid buffer integer property 0x%04x", param);
}
@@ -1227,6 +1234,7 @@ START_API_FUNC
case AL_PACK_BLOCK_ALIGNMENT_SOFT:
case AL_AMBISONIC_LAYOUT_SOFT:
case AL_AMBISONIC_SCALING_SOFT:
+ case AL_UNPACK_AMBISONIC_ORDER_SOFT:
alBufferi(buffer, param, values[0]);
return;
}
@@ -1386,6 +1394,10 @@ START_API_FUNC
*value = albuf->AmbiScaling;
break;
+ case AL_UNPACK_AMBISONIC_ORDER_SOFT:
+ *value = static_cast<int>(albuf->UnpackAmbiOrder);
+ break;
+
default:
context->setError(AL_INVALID_ENUM, "Invalid buffer integer property 0x%04x", param);
}
@@ -1428,6 +1440,7 @@ START_API_FUNC
case AL_PACK_BLOCK_ALIGNMENT_SOFT:
case AL_AMBISONIC_LAYOUT_SOFT:
case AL_AMBISONIC_SCALING_SOFT:
+ case AL_UNPACK_AMBISONIC_ORDER_SOFT:
alGetBufferi(buffer, param, values);
return;
}