Finalize AL_SOFT_bformat_ex
This commit is contained in:
+8
-1
@@ -785,6 +785,13 @@ constexpr struct {
|
||||
|
||||
DECL(AL_DROP_UNMATCHED_SOFT),
|
||||
DECL(AL_REMIX_UNMATCHED_SOFT),
|
||||
|
||||
DECL(AL_AMBISONIC_LAYOUT_SOFT),
|
||||
DECL(AL_AMBISONIC_SCALING_SOFT),
|
||||
DECL(AL_FUMA_SOFT),
|
||||
DECL(AL_ACN_SOFT),
|
||||
DECL(AL_SN3D_SOFT),
|
||||
DECL(AL_N3D_SOFT),
|
||||
};
|
||||
#undef DECL
|
||||
|
||||
@@ -828,7 +835,7 @@ constexpr ALchar alExtList[] =
|
||||
"AL_EXT_SOURCE_RADIUS "
|
||||
"AL_EXT_STEREO_ANGLES "
|
||||
"AL_LOKI_quadriphonic "
|
||||
"AL_SOFTX_bformat_ex "
|
||||
"AL_SOFT_bformat_ex "
|
||||
"AL_SOFT_block_alignment "
|
||||
"AL_SOFT_deferred_updates "
|
||||
"AL_SOFT_direct_channels "
|
||||
|
||||
@@ -77,21 +77,6 @@ AL_API void AL_APIENTRY alGetPointervSOFT(ALenum pname, void **values);
|
||||
#define AL_EFFECTSLOT_TARGET_SOFT 0xf000
|
||||
#endif
|
||||
|
||||
#ifndef AL_SOFT_bformat_ex
|
||||
#define AL_SOFT_bformat_ex
|
||||
#define AL_AMBISONIC_LAYOUT_SOFT 0x1997
|
||||
#define AL_AMBISONIC_SCALING_SOFT 0x1998
|
||||
|
||||
/* Ambisonic layouts */
|
||||
#define AL_FUMA_SOFT 0x0000
|
||||
#define AL_ACN_SOFT 0x0001
|
||||
|
||||
/* Ambisonic scalings (normalization) */
|
||||
/*#define AL_FUMA_SOFT*/
|
||||
#define AL_SN3D_SOFT 0x0001
|
||||
#define AL_N3D_SOFT 0x0002
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
+12
-12
@@ -95,16 +95,6 @@ typedef void (AL_APIENTRY*LPALEVENTCALLBACKSOFT)(ALEVENTPROCSOFT callback, void
|
||||
typedef void* (AL_APIENTRY*LPALGETPOINTERSOFT)(ALenum pname);
|
||||
typedef void (AL_APIENTRY*LPALGETPOINTERVSOFT)(ALenum pname, void **values);
|
||||
#endif
|
||||
|
||||
#ifndef AL_SOFT_bformat_ex
|
||||
#define AL_SOFT_bformat_ex
|
||||
#define AL_AMBISONIC_LAYOUT_SOFT 0x1997
|
||||
#define AL_AMBISONIC_SCALING_SOFT 0x1998
|
||||
#define AL_FUMA_SOFT 0x0000
|
||||
#define AL_ACN_SOFT 0x0001
|
||||
#define AL_SN3D_SOFT 0x0001
|
||||
#define AL_N3D_SOFT 0x0002
|
||||
#endif
|
||||
#endif /* ALLOW_EXPERIMENTAL_EXTS */
|
||||
}
|
||||
|
||||
@@ -788,7 +778,7 @@ int AudioState::handler()
|
||||
}
|
||||
#endif
|
||||
#ifdef AL_SOFT_bformat_ex
|
||||
const bool has_bfmt_ex{alIsExtensionPresent("AL_SOFTX_bformat_ex") != AL_FALSE};
|
||||
const bool has_bfmt_ex{alIsExtensionPresent("AL_SOFT_bformat_ex") != AL_FALSE};
|
||||
ALenum ambi_layout{AL_FUMA_SOFT};
|
||||
ALenum ambi_scale{AL_FUMA_SOFT};
|
||||
#endif
|
||||
@@ -976,7 +966,17 @@ int AudioState::handler()
|
||||
#ifdef AL_SOFT_bformat_ex
|
||||
ambi_layout = AL_ACN_SOFT;
|
||||
ambi_scale = AL_SN3D_SOFT;
|
||||
if(!has_bfmt_ex)
|
||||
if(has_bfmt_ex)
|
||||
{
|
||||
/* An identity matrix that doesn't remix any channels. */
|
||||
std::vector<double> mtx(64*64, 0.0);
|
||||
mtx[0 + 0*64] = 1.0;
|
||||
mtx[1 + 1*64] = 1.0;
|
||||
mtx[2 + 2*64] = 1.0;
|
||||
mtx[3 + 3*64] = 1.0;
|
||||
swr_set_matrix(mSwresCtx.get(), mtx.data(), 64);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
/* Without AL_SOFT_bformat_ex, OpenAL only supports FuMa channel
|
||||
|
||||
@@ -515,6 +515,21 @@ ALC_API void ALC_APIENTRY alcGetInteger64vSOFT(ALCdevice *device, ALCenum pname,
|
||||
#define AL_REMIX_UNMATCHED_SOFT 0x0002
|
||||
#endif
|
||||
|
||||
#ifndef AL_SOFT_bformat_ex
|
||||
#define AL_SOFT_bformat_ex 1
|
||||
#define AL_AMBISONIC_LAYOUT_SOFT 0x1997
|
||||
#define AL_AMBISONIC_SCALING_SOFT 0x1998
|
||||
|
||||
/* Ambisonic layouts */
|
||||
#define AL_FUMA_SOFT 0x0000
|
||||
#define AL_ACN_SOFT 0x0001
|
||||
|
||||
/* Ambisonic scalings (normalization) */
|
||||
/*#define AL_FUMA_SOFT*/
|
||||
#define AL_SN3D_SOFT 0x0001
|
||||
#define AL_N3D_SOFT 0x0002
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user