Start a ALC_SOFT_loopback2 extension
commitd3365f1b5b538dd261d9114fb31877b8dba5285d
authorChris Robinson <chris.kcat@gmail.com>
Wed, 1 Mar 2017 02:34:23 +0000 (28 18:34 -0800)
committerChris Robinson <chris.kcat@gmail.com>
Wed, 1 Mar 2017 03:01:48 +0000 (28 19:01 -0800)
tree91d36a90875727bac372f6b1e125209fc8e2168f
parentf8558ed2b7a2e51cd9e47ffe2937cda9a1ccfe36
Start a ALC_SOFT_loopback2 extension

This extends the base ALC_SOFT_loopback extension with support for B-Format.
When ALC_FORMAT_CHANNELS_SOFT is set to ALC_BFORMAT3D_SOFT, then additional
attributes must be specified. ALC_AMBISONIC_LAYOUT_SOFT must be set to
ALC_ACN_SOFT or ALC_FUMA_SOFT for the desired channel layout,
ALC_AMBISONIC_SCALING_SOFT must be set to ALC_N3D_SOFT, ALC_SN3D_SOFT, or
ALC_FUMA_SOFT for the desired channel scaling/normalization scheme, and
ALC_AMBISONIC_ORDER_SOFT must be set to an integer value greater than 0 for the
ambisonic order (maximum allowed is implementation-dependent).

Note that the number of channels required for ALC_BFORMAT3D_SOFT is dependent
on the ambisonic order. The number of channels can be calculated by:
num_channels = (order+1) * (order+1); /* or pow(order+1, 2); */

In addition, a new alcIsAmbisonicFormatSupportedSOFT function allows apps to
determine which layout/scaling/order combinations are supported by the loopback
device. For example,
alcIsAmbisonicFormatSupported(device, ALC_ACN_SOFT, ALC_SN3D_SOFT, 2) will
check if 2nd order AmbiX (ACN layout and SN3D scaling) rendering is supported
for ALC_BFORMAT3D_SOFT output.
Alc/ALc.c
OpenAL32/Include/alMain.h