Add OpenAL AL_SOFT_source_spatialize extension support for stereo spatial audio playback

Add `AllowSpatialization` option to `AudioSource`
This commit is contained in:
Wojtek Figat
2023-04-20 15:01:22 +02:00
parent 094a3cfe5a
commit 1ffe8a7b60
16 changed files with 183 additions and 130 deletions

View File

@@ -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;
}
}