2019-12-26 14:45:42 -05:00
|
|
|
// Copyright Epic Games, Inc. All Rights Reserved.
|
2019-08-26 18:35:22 -04:00
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include "CoreMinimal.h"
|
|
|
|
|
#include "Misc/ScopeLock.h"
|
|
|
|
|
#include "BufferVectorOperations.h"
|
|
|
|
|
|
|
|
|
|
#define USE_AUDIO_DEBUGGING UE_BUILD_DEBUG
|
|
|
|
|
|
|
|
|
|
void BreakWhenAudible(float* InBuffer, int32 NumSamples)
|
|
|
|
|
{
|
|
|
|
|
static const float AudibilityThreshold = Audio::ConvertToLinear(-40.0f);
|
|
|
|
|
|
2022-04-04 13:09:43 -04:00
|
|
|
TArrayView<const float> InBufferView(InBuffer, NumSamples);
|
|
|
|
|
float BufferAmplitude = Audio::ArrayGetAverageAbsValue(InBufferView);
|
2019-08-26 18:35:22 -04:00
|
|
|
|
|
|
|
|
if (BufferAmplitude > AudibilityThreshold)
|
|
|
|
|
{
|
|
|
|
|
PLATFORM_BREAK();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void BreakWhenTooLoud(float* InBuffer, int32 NumSamples)
|
|
|
|
|
{
|
|
|
|
|
static const float PainThreshold = Audio::ConvertToLinear(3.0f);
|
|
|
|
|
|
2022-04-04 13:09:43 -04:00
|
|
|
TArrayView<const float> InBufferView(InBuffer, NumSamples);
|
|
|
|
|
float BufferAmplitude = Audio::ArrayGetAverageAbsValue(InBufferView);
|
2019-08-26 18:35:22 -04:00
|
|
|
|
|
|
|
|
if (BufferAmplitude > PainThreshold)
|
|
|
|
|
{
|
|
|
|
|
PLATFORM_BREAK();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#if USE_AUDIO_DEBUGGING
|
|
|
|
|
#define BREAK_WHEN_AUDIBLE(Ptr, Num) BreakWhenAudible(Ptr, Num);
|
|
|
|
|
#define BREAK_WHEN_TOO_LOUD(Ptr, Num) BreakWhenTooLoud(Ptr, Num);
|
|
|
|
|
#else
|
|
|
|
|
#define BREAK_WHEN_AUDIBLE(Ptr, Num)
|
|
|
|
|
#define BREAK_WHEN_TOO_LOUD(Ptr, Num)
|
|
|
|
|
#endif
|