summaryrefslogtreecommitdiffhomepage
path: root/src/audio.c
diff options
context:
space:
mode:
authorraysan5 <[email protected]>2017-01-15 01:25:09 +0100
committerraysan5 <[email protected]>2017-01-15 01:25:09 +0100
commit6d6659205c04e52b88d5f22eda1722c352f548a9 (patch)
treebd6654e86dbb42719301c4c85387adac91031b57 /src/audio.c
parent53457e466477e3d3d47477d2b319035433386063 (diff)
downloadraylib-6d6659205c04e52b88d5f22eda1722c352f548a9.tar.gz
raylib-6d6659205c04e52b88d5f22eda1722c352f548a9.zip
Add support for 32-bit PCM sample data
Diffstat (limited to 'src/audio.c')
-rw-r--r--src/audio.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/audio.c b/src/audio.c
index 989512c0..9dedefba 100644
--- a/src/audio.c
+++ b/src/audio.c
@@ -21,7 +21,7 @@
*
* Some design decisions:
* Support only up to two channels: MONO and STEREO (for additional channels, AL_EXT_MCFORMATS)
-* Support only the following sample sizes: 8bit PCM and 16bit PCM (for additional size, AL_EXT_FLOAT32)
+* Support only the following sample sizes: 8bit PCM, 16bit PCM, 32-bit float PCM (using AL_EXT_FLOAT32)
*
* Many thanks to Joshua Reisenauer (github: @kd7tck) for the following additions:
* XM audio module support (jar_xm)
@@ -98,6 +98,15 @@
// In case of music-stalls, just increase this number
#define AUDIO_BUFFER_SIZE 4096 // PCM data samples (i.e. 16bit, Mono: 8Kb)
+// Support uncompressed PCM data in 32-bit float IEEE format
+// NOTE: This definition is included in "AL/alext.h", but some OpenAL implementations
+// could not provide the extensions header (Android), so its defined here
+#if !defined(AL_EXT_float32)
+ #define AL_EXT_float32 1
+ #define AL_FORMAT_MONO_FLOAT32 0x10010
+ #define AL_FORMAT_STEREO_FLOAT32 0x10011
+#endif
+
//----------------------------------------------------------------------------------
// Types and Structures Definition
//----------------------------------------------------------------------------------
@@ -284,7 +293,7 @@ Sound LoadSoundFromWave(Wave wave)
{
case 8: format = AL_FORMAT_MONO8; break;
case 16: format = AL_FORMAT_MONO16; break;
- case 32: //format = AL_FORMAT_MONO_FLOAT32; break; // Requires OpenAL extension: AL_EXT_FLOAT32
+ case 32: format = AL_FORMAT_MONO_FLOAT32; break; // Requires OpenAL extension: AL_EXT_FLOAT32
default: TraceLog(WARNING, "Wave sample size not supported: %i", wave.sampleSize); break;
}
}
@@ -294,7 +303,7 @@ Sound LoadSoundFromWave(Wave wave)
{
case 8: format = AL_FORMAT_STEREO8; break;
case 16: format = AL_FORMAT_STEREO16; break;
- case 32: //format = AL_FORMAT_STEREO_FLOAT32; break; // Requires OpenAL extension: AL_EXT_FLOAT32
+ case 32: format = AL_FORMAT_STEREO_FLOAT32; break; // Requires OpenAL extension: AL_EXT_FLOAT32
default: TraceLog(WARNING, "Wave sample size not supported: %i", wave.sampleSize); break;
}
}
@@ -863,7 +872,7 @@ AudioStream InitAudioStream(unsigned int sampleRate, unsigned int sampleSize, un
{
case 8: stream.format = AL_FORMAT_MONO8; break;
case 16: stream.format = AL_FORMAT_MONO16; break;
- case 32: //stream.format = AL_FORMAT_MONO_FLOAT32; break; // Requires OpenAL extension: AL_EXT_FLOAT32
+ case 32: stream.format = AL_FORMAT_MONO_FLOAT32; break; // Requires OpenAL extension: AL_EXT_FLOAT32
default: TraceLog(WARNING, "Init audio stream: Sample size not supported: %i", sampleSize); break;
}
}
@@ -873,7 +882,7 @@ AudioStream InitAudioStream(unsigned int sampleRate, unsigned int sampleSize, un
{
case 8: stream.format = AL_FORMAT_STEREO8; break;
case 16: stream.format = AL_FORMAT_STEREO16; break;
- case 32: //stream.format = AL_FORMAT_STEREO_FLOAT32; break; // Requires OpenAL extension: AL_EXT_FLOAT32
+ case 32: stream.format = AL_FORMAT_STEREO_FLOAT32; break; // Requires OpenAL extension: AL_EXT_FLOAT32
default: TraceLog(WARNING, "Init audio stream: Sample size not supported: %i", sampleSize); break;
}
}