|
79 | 79 | #define AL_FORMAT_STEREO_FLOAT32 0x10011 |
80 | 80 | #endif |
81 | 81 |
|
| 82 | +// AL_EXT_32bit_formats support... |
| 83 | +// (this doesn't cover the AL_EXT_MCFORMATS items at the moment, per spec). |
| 84 | +#ifndef AL_FORMAT_MONO_I32 |
| 85 | +#define AL_FORMAT_MONO_I32 0x19DB |
| 86 | +#endif |
| 87 | + |
| 88 | +#ifndef AL_FORMAT_STEREO_I32 |
| 89 | +#define AL_FORMAT_STEREO_I32 0x19DC |
| 90 | +#endif |
| 91 | + |
82 | 92 | // ALC_EXT_DISCONNECTED support... |
83 | 93 | #ifndef ALC_CONNECTED |
84 | 94 | #define ALC_CONNECTED 0x313 |
@@ -1883,7 +1893,8 @@ static ALCenum null_device_error = ALC_NO_ERROR; |
1883 | 1893 | ALC_EXTENSION_ITEM(ALC_EXT_DISCONNECT) |
1884 | 1894 |
|
1885 | 1895 | #define AL_EXTENSION_ITEMS \ |
1886 | | - AL_EXTENSION_ITEM(AL_EXT_FLOAT32) |
| 1896 | + AL_EXTENSION_ITEM(AL_EXT_FLOAT32) \ |
| 1897 | + AL_EXTENSION_ITEM(AL_EXT_32bit_formats) |
1887 | 1898 |
|
1888 | 1899 |
|
1889 | 1900 | static void set_alc_error(ALCdevice *device, const ALCenum error) |
@@ -2090,6 +2101,16 @@ static ALCboolean alcfmt_to_sdlfmt(const ALCenum alfmt, SDL_AudioFormat *sdlfmt, |
2090 | 2101 | *channels = 2; |
2091 | 2102 | *framesize = 8; |
2092 | 2103 | break; |
| 2104 | + case AL_FORMAT_MONO_I32: |
| 2105 | + *sdlfmt = SDL_AUDIO_S32; |
| 2106 | + *channels = 1; |
| 2107 | + *framesize = 4; |
| 2108 | + break; |
| 2109 | + case AL_FORMAT_STEREO_I32: |
| 2110 | + *sdlfmt = SDL_AUDIO_S32; |
| 2111 | + *channels = 2; |
| 2112 | + *framesize = 8; |
| 2113 | + break; |
2093 | 2114 | default: |
2094 | 2115 | return ALC_FALSE; |
2095 | 2116 | } |
@@ -3256,6 +3277,8 @@ static ALenum _alGetEnumValue(const ALchar *enumname) |
3256 | 3277 | ENUM_TEST(AL_EXPONENT_DISTANCE_CLAMPED); |
3257 | 3278 | ENUM_TEST(AL_FORMAT_MONO_FLOAT32); |
3258 | 3279 | ENUM_TEST(AL_FORMAT_STEREO_FLOAT32); |
| 3280 | + ENUM_TEST(AL_FORMAT_MONO_I32); |
| 3281 | + ENUM_TEST(AL_FORMAT_STEREO_I32); |
3259 | 3282 | #undef ENUM_TEST |
3260 | 3283 |
|
3261 | 3284 | set_al_error(ctx, AL_INVALID_VALUE); |
|
0 commit comments