14 template <
typename InSampleType>
26 template <
typename InSampleType>
37 , NumUnderflowSamples(0)
39 check(NumWindowSamples >= 1);
40 check(NumHopSamples >= 1);
57 return NumWindowSamples;
69 return NumUnderflowSamples;
84 if (NumUnderflowSamples > 0)
87 if (StorageBuffer.
Num() > NumUnderflowSamples)
89 StorageBuffer.
RemoveAt(0, NumUnderflowSamples);
90 NumUnderflowSamples = 0;
94 NumUnderflowSamples -= StorageBuffer.
Num();
95 StorageBuffer.
Reset();
100 int32 NumSamples =
InBuffer.Num() + StorageBuffer.
Num() - NumUnderflowSamples;
105 NumUnderflowSamples -=
InBuffer.Num();
107 else if (NumSamples < NumWindowSamples)
115 NumUnderflowSamples = 0;
154 StorageBuffer.
Reset(0);
164 StorageBuffer.
Reset();
165 NumUnderflowSamples = 0;
170 int32 NumWindowSamples;
180 int32 NumUnderflowSamples;
188 template <
typename InSampleType>
209 int32 NumUnderflowSamples;
217 template<
typename InAllocator = FDefaultAllocator>
241 if (ReadIndex > SlidingWindow.MaxReadIndex)
255 if (ReadIndex > SlidingWindow.MaxReadIndex)
270 return ReadIndex !=
Other.ReadIndex;
319 WindowBuffer.
Reset();
369 if (MaxReadIndex < 0)
384 template<
typename InAllocator = FDefaultAllocator>
400 template<
typename InAllocator = FDefaultAllocator>
413 template <
class InSampleType>
478 template <
typename InSampleType,
typename InAllocator = FDefaultAllocator>
514 TAutoSlidingWindowIterator
end()
#define check(expr)
Definition AssertionMacros.h:314
@ INDEX_NONE
Definition CoreMiscDefines.h:150
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
Definition SlidingWindow.h:480
TAutoSlidingWindow(TSlidingBuffer< InSampleType > &InBuffer, TArrayView< const InSampleType > InNewBuffer, TArray< InSampleType, InAllocator > &OutWindow, bool bDoFlush=false)
Definition SlidingWindow.h:494
TAutoSlidingWindowIterator end()
Definition SlidingWindow.h:514
TAutoSlidingWindowIterator begin()
Definition SlidingWindow.h:504
Definition SlidingWindow.h:415
TScopedSlidingWindow(TSlidingBuffer< InSampleType > &InSlidingBuffer, TArrayView< const InSampleType > InNewBuffer, bool bDoFlush=false)
Definition SlidingWindow.h:432
virtual ~TScopedSlidingWindow()
Definition SlidingWindow.h:440
Definition SlidingWindow.h:28
void Reset()
Definition SlidingWindow.h:162
void StoreForFutureWindows(TArrayView< const InSampleType > InBuffer)
Definition SlidingWindow.h:82
int32 GetNumUnderflowSamples() const
Definition SlidingWindow.h:67
int32 GetNumHopSamples() const
Definition SlidingWindow.h:61
TSlidingBuffer(const int32 InNumWindowSamples, const int32 InNumHopSamples)
Definition SlidingWindow.h:34
TSlidingBuffer(const TSlidingBuffer &)=default
int32 GetNumWindowSamples() const
Definition SlidingWindow.h:55
TSlidingBuffer(TSlidingBuffer &&)=default
TSlidingBuffer & operator=(TSlidingBuffer &&InOther)=default
TSlidingBuffer()
Definition SlidingWindow.h:43
TArrayView< const InSampleType > GetStorage() const
Definition SlidingWindow.h:72
TSlidingBuffer & operator=(const TSlidingBuffer &InOther)=default
Definition SlidingWindow.h:219
TArray< InSampleType, InAllocator > & operator*()
Definition SlidingWindow.h:276
static const int32 ReadIndexEnd
Definition SlidingWindow.h:231
TSlidingWindowIterator operator++()
Definition SlidingWindow.h:250
TSlidingWindowIterator(const TSlidingWindow &InSlidingWindow, TArray< InSampleType, InAllocator > &OutWindowBuffer, int32 InReadIndex)
Definition SlidingWindow.h:236
bool operator!=(const TSlidingWindowIterator &Other) const
Definition SlidingWindow.h:268
Definition SlidingWindow.h:190
TSlidingWindowIterator< InAllocator > begin(TArray< InSampleType, InAllocator > &OutWindowBuffer) const
Definition SlidingWindow.h:385
const int32 NumWindowSamples
Definition SlidingWindow.h:201
const int32 NumHopSamples
Definition SlidingWindow.h:204
virtual ~TSlidingWindow()
Definition SlidingWindow.h:375
TArrayView< const InSampleType > StorageBuffer
Definition SlidingWindow.h:195
TSlidingWindowIterator< InAllocator > end(TArray< InSampleType, InAllocator > &OutWindowBuffer) const
Definition SlidingWindow.h:401
TSlidingWindow(const TSlidingBuffer< InSampleType > &InSlidingBuffer, TArrayView< const InSampleType > InNewBuffer, bool bDoFlush)
Definition SlidingWindow.h:333
TArrayView< const InSampleType > NewBuffer
Definition SlidingWindow.h:198
Definition ArrayView.h:139
UE_FORCEINLINE_HINT constexpr ElementType * GetData() const
Definition ArrayView.h:295
UE_FORCEINLINE_HINT constexpr SizeType Num() const
Definition ArrayView.h:380
UE_FORCEINLINE_HINT SizeType AddUninitialized()
Definition Array.h:1664
UE_REWRITE SizeType Num() const
Definition Array.h:1144
void RemoveAt(SizeType Index, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2083
void Reset(SizeType NewSize=0)
Definition Array.h:2246
UE_NODEBUG UE_FORCEINLINE_HINT ElementType * GetData() UE_LIFETIMEBOUND
Definition Array.h:1027
void Append(const TArray< OtherElementType, OtherAllocatorType > &Source)
Definition Array.h:2412
NO_LOGGING.
Definition AudioMixerPlatformAndroid.cpp:53
static UE_FORCEINLINE_HINT void * Memcpy(void *Dest, const void *Src, SIZE_T Count)
Definition UnrealMemory.h:160
static UE_FORCEINLINE_HINT void * Memset(void *Dest, uint8 Char, SIZE_T Count)
Definition UnrealMemory.h:119