32 bit float test

32 bit floating point sounds
This commit is contained in:
marauder2k7 2024-05-24 16:19:10 +01:00
parent ebdc408385
commit c28cedc2d8
2 changed files with 15 additions and 8 deletions

View file

@ -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<int*>(buffer), framesToRead);
break;
case SF_FORMAT_PCM_16:
case SF_FORMAT_VORBIS:
framesRead = sf_readf_short(sndFile, reinterpret_cast<short*>(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<float*>(buffer), framesToRead);
break;
default:

View file

@ -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_
#endif // _SFXALBUFFER_H_