UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
VectorFFT.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "DSP/FFTAlgorithm.h"
7
8namespace Audio
9{
10 // Forward declaration
11 class FVectorComplexFFT;
12
14 {
15 public:
17 static const int32 MinLog2FFTSize;
18
20 static const int32 MaxLog2FFTSize;
21
27
29
31 virtual int32 Size() const override;
32
34 virtual EFFTScaling ForwardScaling() const override;
35
37 virtual EFFTScaling InverseScaling() const override;
38
39
47 virtual void ForwardRealToComplex(const float* RESTRICT InReal, float* RESTRICT OutComplex) override;
48
56 virtual void InverseComplexToReal(const float* RESTRICT InComplex, float* RESTRICT OutReal) override;
57
66 virtual void BatchForwardRealToComplex(int32 InCount, const float* const RESTRICT InReal[], float* RESTRICT OutComplex[]) override;
67
76 virtual void BatchInverseComplexToReal(int32 InCount, const float* const RESTRICT InComplex[], float* RESTRICT OutReal[]) override;
77
78 private:
79
80 // Needed to convert buffers for implementation of real-to-complex fft using complex-to-comlex fft.
81 struct FConversionBuffers
82 {
83 FAlignedFloatBuffer AlphaReal;
84 FAlignedFloatBuffer AlphaImag;
85 FAlignedFloatBuffer BetaReal;
86 FAlignedFloatBuffer BetaImag;
87 };
88
89
90 // Initializes conversion buffers
91 void InitRealSequenceConversionBuffers();
92
93 // Converts a buffer
94 void ConvertSequence(const FConversionBuffers& InBuffers, const float* RESTRICT InValues, int32 InStartIndex, float* RESTRICT OutValues);
95
96 int32 FFTSize;
97 int32 Log2FFTSize;
98
99 FAlignedFloatBuffer WorkBuffer;
100
101 FConversionBuffers ForwardConvBuffers;
102 FConversionBuffers InverseConvBuffers;
103
104 // Complex FFT implementation.
106 };
107
110 {
111 public:
112 virtual ~FVectorFFTFactory();
113
115 virtual FName GetFactoryName() const override;
116
118 virtual bool IsHardwareAccelerated() const override;
119
121 virtual bool Expects128BitAlignedArrays() const override;
122
124 virtual bool AreFFTSettingsSupported(const FFFTSettings& InSettings) const override;
125
128 };
129}
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
#define RESTRICT
Definition Platform.h:706
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
Definition VectorFFT.h:110
virtual bool IsHardwareAccelerated() const override
Definition VectorFFT.cpp:1234
virtual bool Expects128BitAlignedArrays() const override
Definition VectorFFT.cpp:1240
virtual FName GetFactoryName() const override
Definition VectorFFT.cpp:1227
virtual ~FVectorFFTFactory()
Definition VectorFFT.cpp:1222
virtual bool AreFFTSettingsSupported(const FFFTSettings &InSettings) const override
Definition VectorFFT.cpp:1246
virtual TUniquePtr< IFFTAlgorithm > NewFFTAlgorithm(const FFFTSettings &InSettings) override
Definition VectorFFT.cpp:1257
Definition VectorFFT.h:14
virtual EFFTScaling InverseScaling() const override
Definition VectorFFT.cpp:1118
virtual ~FVectorRealToComplexFFT()
Definition VectorFFT.cpp:1102
static const int32 MaxLog2FFTSize
Definition VectorFFT.h:20
virtual void BatchInverseComplexToReal(int32 InCount, const float *const RESTRICT InComplex[], float *RESTRICT OutReal[]) override
Definition VectorFFT.cpp:1211
virtual void InverseComplexToReal(const float *RESTRICT InComplex, float *RESTRICT OutReal) override
Definition VectorFFT.cpp:1164
virtual int32 Size() const override
Definition VectorFFT.cpp:1106
static const int32 MinLog2FFTSize
Definition VectorFFT.h:17
virtual EFFTScaling ForwardScaling() const override
Definition VectorFFT.cpp:1112
virtual void BatchForwardRealToComplex(int32 InCount, const float *const RESTRICT InReal[], float *RESTRICT OutComplex[]) override
Definition VectorFFT.cpp:1203
virtual void ForwardRealToComplex(const float *RESTRICT InReal, float *RESTRICT OutComplex) override
Definition VectorFFT.cpp:1123
Definition FFTAlgorithm.h:121
Definition FFTAlgorithm.h:56
Definition NameTypes.h:617
Definition UniquePtr.h:107
NO_LOGGING.
Definition AudioMixerPlatformAndroid.cpp:53
EFFTScaling
Definition FFTAlgorithm.h:18
Definition FFTAlgorithm.h:40