diff options
Diffstat (limited to 'examples/common')
-rw-r--r-- | examples/common/alhelpers.c | 52 | ||||
-rw-r--r-- | examples/common/alhelpers.h | 13 |
2 files changed, 61 insertions, 4 deletions
diff --git a/examples/common/alhelpers.c b/examples/common/alhelpers.c index 0febef43..6627f704 100644 --- a/examples/common/alhelpers.c +++ b/examples/common/alhelpers.c @@ -36,6 +36,7 @@ #include "AL/al.h" #include "AL/alc.h" +#include "AL/alext.h" /* InitAL opens a device and sets up a context using default attributes, making @@ -107,10 +108,53 @@ const char *FormatName(ALenum format) { switch(format) { - case AL_FORMAT_MONO8: return "Mono, U8"; - case AL_FORMAT_MONO16: return "Mono, S16"; - case AL_FORMAT_STEREO8: return "Stereo, U8"; - case AL_FORMAT_STEREO16: return "Stereo, S16"; + case AL_FORMAT_MONO8: return "Mono, U8"; + case AL_FORMAT_MONO16: return "Mono, S16"; + case AL_FORMAT_MONO_FLOAT32: return "Mono, Float32"; + case AL_FORMAT_MONO_MULAW: return "Mono, muLaw"; + case AL_FORMAT_MONO_ALAW_EXT: return "Mono, aLaw"; + case AL_FORMAT_MONO_IMA4: return "Mono, IMA4 ADPCM"; + case AL_FORMAT_MONO_MSADPCM_SOFT: return "Mono, MS ADPCM"; + case AL_FORMAT_STEREO8: return "Stereo, U8"; + case AL_FORMAT_STEREO16: return "Stereo, S16"; + case AL_FORMAT_STEREO_FLOAT32: return "Stereo, Float32"; + case AL_FORMAT_STEREO_MULAW: return "Stereo, muLaw"; + case AL_FORMAT_STEREO_ALAW_EXT: return "Stereo, aLaw"; + case AL_FORMAT_STEREO_IMA4: return "Stereo, IMA4 ADPCM"; + case AL_FORMAT_STEREO_MSADPCM_SOFT: return "Stereo, MS ADPCM"; + case AL_FORMAT_QUAD8: return "Quadraphonic, U8"; + case AL_FORMAT_QUAD16: return "Quadraphonic, S16"; + case AL_FORMAT_QUAD32: return "Quadraphonic, Float32"; + case AL_FORMAT_QUAD_MULAW: return "Quadraphonic, muLaw"; + case AL_FORMAT_51CHN8: return "5.1 Surround, U8"; + case AL_FORMAT_51CHN16: return "5.1 Surround, S16"; + case AL_FORMAT_51CHN32: return "5.1 Surround, Float32"; + case AL_FORMAT_51CHN_MULAW: return "5.1 Surround, muLaw"; + case AL_FORMAT_61CHN8: return "6.1 Surround, U8"; + case AL_FORMAT_61CHN16: return "6.1 Surround, S16"; + case AL_FORMAT_61CHN32: return "6.1 Surround, Float32"; + case AL_FORMAT_61CHN_MULAW: return "6.1 Surround, muLaw"; + case AL_FORMAT_71CHN8: return "7.1 Surround, U8"; + case AL_FORMAT_71CHN16: return "7.1 Surround, S16"; + case AL_FORMAT_71CHN32: return "7.1 Surround, Float32"; + case AL_FORMAT_71CHN_MULAW: return "7.1 Surround, muLaw"; + case AL_FORMAT_BFORMAT2D_8: return "B-Format 2D, U8"; + case AL_FORMAT_BFORMAT2D_16: return "B-Format 2D, S16"; + case AL_FORMAT_BFORMAT2D_FLOAT32: return "B-Format 2D, Float32"; + case AL_FORMAT_BFORMAT2D_MULAW: return "B-Format 2D, muLaw"; + case AL_FORMAT_BFORMAT3D_8: return "B-Format 3D, U8"; + case AL_FORMAT_BFORMAT3D_16: return "B-Format 3D, S16"; + case AL_FORMAT_BFORMAT3D_FLOAT32: return "B-Format 3D, Float32"; + case AL_FORMAT_BFORMAT3D_MULAW: return "B-Format 3D, muLaw"; + case AL_FORMAT_UHJ2CHN8_SOFT: return "UHJ 2-channel, U8"; + case AL_FORMAT_UHJ2CHN16_SOFT: return "UHJ 2-channel, S16"; + case AL_FORMAT_UHJ2CHN_FLOAT32_SOFT: return "UHJ 2-channel, Float32"; + case AL_FORMAT_UHJ3CHN8_SOFT: return "UHJ 3-channel, U8"; + case AL_FORMAT_UHJ3CHN16_SOFT: return "UHJ 3-channel, S16"; + case AL_FORMAT_UHJ3CHN_FLOAT32_SOFT: return "UHJ 3-channel, Float32"; + case AL_FORMAT_UHJ4CHN8_SOFT: return "UHJ 4-channel, U8"; + case AL_FORMAT_UHJ4CHN16_SOFT: return "UHJ 4-channel, S16"; + case AL_FORMAT_UHJ4CHN_FLOAT32_SOFT: return "UHJ 4-channel, Float32"; } return "Unknown Format"; } diff --git a/examples/common/alhelpers.h b/examples/common/alhelpers.h index 3752d218..34f73864 100644 --- a/examples/common/alhelpers.h +++ b/examples/common/alhelpers.h @@ -18,6 +18,19 @@ void CloseAL(void); int altime_get(void); void al_nssleep(unsigned long nsec); +/* C doesn't allow casting between function and non-function pointer types, so + * with C99 we need to use a union to reinterpret the pointer type. Pre-C99 + * still needs to use a normal cast and live with the warning (C++ is fine with + * a regular reinterpret_cast). + */ +#if __STDC_VERSION__ >= 199901L +#define FUNCTION_CAST(T, ptr) (union{void *p; T f;}){ptr}.f +#elif defined(__cplusplus) +#define FUNCTION_CAST(T, ptr) reinterpret_cast<T>(ptr) +#else +#define FUNCTION_CAST(T, ptr) (T)(ptr) +#endif + #ifdef __cplusplus } // extern "C" #endif |