From c28cedc2d898f2c2fa00d02bc715f535878879ea Mon Sep 17 00:00:00 2001 From: marauder2k7 Date: Fri, 24 May 2024 16:19:10 +0100 Subject: [PATCH] 32 bit float test 32 bit floating point sounds --- Engine/source/sfx/media/sfxSndStream.cpp | 7 ++----- Engine/source/sfx/openal/sfxALBuffer.h | 16 +++++++++++++--- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/Engine/source/sfx/media/sfxSndStream.cpp b/Engine/source/sfx/media/sfxSndStream.cpp index a2a508804..829d73f37 100644 --- a/Engine/source/sfx/media/sfxSndStream.cpp +++ b/Engine/source/sfx/media/sfxSndStream.cpp @@ -59,15 +59,12 @@ bool SFXSndStream::_readHeader() case SF_FORMAT_PCM_16: bitsPerSample = 16; break; - case SF_FORMAT_VORBIS: - bitsPerSample = 16; - sf_command(sndFile, SFC_SET_SCALE_FLOAT_INT_READ, NULL, SF_TRUE); - break; case SF_FORMAT_PCM_24: bitsPerSample = 24; break; case SF_FORMAT_PCM_32: case SF_FORMAT_FLOAT: + case SF_FORMAT_VORBIS: bitsPerSample = 32; break; default: @@ -124,7 +121,6 @@ U32 SFXSndStream::read(U8* buffer, U32 length) framesRead = sf_readf_int(sndFile, reinterpret_cast(buffer), framesToRead); break; case SF_FORMAT_PCM_16: - case SF_FORMAT_VORBIS: framesRead = sf_readf_short(sndFile, reinterpret_cast(buffer), framesToRead); break; case SF_FORMAT_PCM_24: @@ -132,6 +128,7 @@ U32 SFXSndStream::read(U8* buffer, U32 length) break; case SF_FORMAT_PCM_32: case SF_FORMAT_FLOAT: + case SF_FORMAT_VORBIS: framesRead = sf_readf_float(sndFile, reinterpret_cast(buffer), framesToRead); break; default: diff --git a/Engine/source/sfx/openal/sfxALBuffer.h b/Engine/source/sfx/openal/sfxALBuffer.h index 26864a3d0..7589485bd 100644 --- a/Engine/source/sfx/openal/sfxALBuffer.h +++ b/Engine/source/sfx/openal/sfxALBuffer.h @@ -84,14 +84,24 @@ class SFXALBuffer : public SFXBuffer return AL_FORMAT_STEREO8; else if( bps == 32 ) return AL_FORMAT_STEREO16; + else if (bps == 64) + { + if (alIsExtensionPresent("AL_EXT_FLOAT32")) + return AL_FORMAT_STEREO_FLOAT32; + } } else if( format.getChannels() == 1 ) { const U32 bps = format.getBitsPerSample(); - if( bps == 8 ) + if (bps == 8) return AL_FORMAT_MONO8; - else if( bps == 16 ) + else if (bps == 16) return AL_FORMAT_MONO16; + else if (bps == 32) + { + if(alIsExtensionPresent("AL_EXT_FLOAT32")) + return AL_FORMAT_MONO_FLOAT32; + } } return 0; } @@ -116,4 +126,4 @@ class SFXALBuffer : public SFXBuffer virtual ~SFXALBuffer(); }; -#endif // _SFXALBUFFER_H_ \ No newline at end of file +#endif // _SFXALBUFFER_H_