Add OpenAL AL_SOFT_source_spatialize extension support for stereo spatial audio playback
Add `AllowSpatialization` option to `AudioSource`
This commit is contained in:
@@ -4,6 +4,11 @@
|
||||
#include "Engine/Core/Core.h"
|
||||
#include "Engine/Core/Memory/Allocation.h"
|
||||
|
||||
#define CONVERT_TO_MONO_AVG 1
|
||||
#if !CONVERT_TO_MONO_AVG
|
||||
#include "Engine/Core/Math/Math.h"
|
||||
#endif
|
||||
|
||||
void ConvertToMono8(const int8* input, uint8* output, uint32 numSamples, uint32 numChannels)
|
||||
{
|
||||
for (uint32 i = 0; i < numSamples; i++)
|
||||
@@ -15,7 +20,11 @@ void ConvertToMono8(const int8* input, uint8* output, uint32 numSamples, uint32
|
||||
++input;
|
||||
}
|
||||
|
||||
*output = sum / numChannels;
|
||||
#if CONVERT_TO_MONO_AVG
|
||||
*output = (uint8)(sum / numChannels);
|
||||
#else
|
||||
*output = (uint8)Math::Clamp<int16>(sum, 0, MAX_uint8);
|
||||
#endif
|
||||
++output;
|
||||
}
|
||||
}
|
||||
@@ -31,7 +40,11 @@ void ConvertToMono16(const int16* input, int16* output, uint32 numSamples, uint3
|
||||
++input;
|
||||
}
|
||||
|
||||
*output = sum / numChannels;
|
||||
#if CONVERT_TO_MONO_AVG
|
||||
*output = (int16)(sum / numChannels);
|
||||
#else
|
||||
*output = (int16)Math::Clamp<int32>(sum, MIN_int16, MAX_int16);
|
||||
#endif
|
||||
++output;
|
||||
}
|
||||
}
|
||||
@@ -55,8 +68,12 @@ void ConvertToMono24(const uint8* input, uint8* output, uint32 numSamples, uint3
|
||||
input += 3;
|
||||
}
|
||||
|
||||
const int32 avg = (int32)(sum / numChannels);
|
||||
Convert32To24Bits(avg, output);
|
||||
#if CONVERT_TO_MONO_AVG
|
||||
const int32 val = (int32)(sum / numChannels);
|
||||
#else
|
||||
const int32 val = (int32)Math::Clamp<int64>(sum, MIN_int16, MAX_int16);
|
||||
#endif
|
||||
Convert32To24Bits(val, output);
|
||||
output += 3;
|
||||
}
|
||||
}
|
||||
@@ -72,7 +89,11 @@ void ConvertToMono32(const int32* input, int32* output, uint32 numSamples, uint3
|
||||
++input;
|
||||
}
|
||||
|
||||
#if CONVERT_TO_MONO_AVG
|
||||
*output = (int32)(sum / numChannels);
|
||||
#else
|
||||
*output = (int32)Math::Clamp<int64>(sum, MIN_int16, MAX_int16);
|
||||
#endif
|
||||
++output;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user