Add an extension to change a buffer's unpack ambisonic order
parent
fc906c97f5
commit
a0b7638d63
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -795,6 +795,8 @@ constexpr struct {
|
|||
|
||||
DECL(AL_BUFFER_CALLBACK_FUNCTION_SOFT),
|
||||
DECL(AL_BUFFER_CALLBACK_USER_PARAM_SOFT),
|
||||
|
||||
DECL(AL_UNPACK_AMBISONIC_ORDER_SOFT),
|
||||
};
|
||||
#undef DECL
|
||||
|
||||
|
@ -839,6 +841,7 @@ constexpr ALchar alExtList[] =
|
|||
"AL_EXT_STEREO_ANGLES "
|
||||
"AL_LOKI_quadriphonic "
|
||||
"AL_SOFT_bformat_ex "
|
||||
"AL_SOFTX_bformat_hoa "
|
||||
"AL_SOFT_block_alignment "
|
||||
"AL_SOFTX_callback_buffer "
|
||||
"AL_SOFT_deferred_updates "
|
||||
|
|
|
@ -94,6 +94,11 @@ AL_API void AL_APIENTRY alGetBufferPtrvSOFT(ALuint buffer, ALenum param, ALvoid
|
|||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef AL_SOFT_bformat_hoa
|
||||
#define AL_SOFT_bformat_hoa
|
||||
#define AL_UNPACK_AMBISONIC_ORDER_SOFT 0x200F
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue