UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
RuntimeResampler.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
6#include "DSP/Dsp.h"
8
9#define UE_API SIGNALPROCESSING_API
10
11namespace Audio
12{
17 {
18 public:
19
20 static UE_API const float MaxFrameRatio;
21 static UE_API const float MinFrameRatio;
22
28
37
45
53
67
81
92 UE_API void ProcessInterleaved(TArrayView<const float> Input, TArrayView<float> Output, int32& OutNumInputFramesConsumed, int32& OutNumOutputFramesProduced);
93
98
99 private:
100 int64 MapOutputFrameToInputFrameFP(int32 InOutputFrameIndex) const;
101
102 struct ResamplingParameters
103 {
105 int32 InputStride = 0;
106 int32 NumInputFrames = -1;
107 TConstArrayView<float*> OutputAudio;
108 int32 OutputStride = 0;
109 int32 NumOutputFrames = -1;
110
111 int32 OutNumInputFramesConsumed = 0;
112 int32 OutNumOutputFramesProduced = 0;
113 };
114
115 void ProcessAudioInternal(ResamplingParameters& Parameters);
116
117 void ProcessAudioInBatches(ResamplingParameters& Parameters, int32 MaxSamplesPerBatch);
118
120 bool DoDirectCopy(ResamplingParameters& Parameters);
121
122 void GenericResamplingCore(const ResamplingParameters& Parameters, int32& OutInputFrameIndexFP, uint32& OutInputFrameRatioFP, int32 OutputSampleIndex, int32 OutputEndIndex);
124 void StereoInterleavedResamplingCore(const float* Input, float* Output, int32& OutInputFrameIndexFP, uint32& OutInputFrameRatioFP, int32 OutputSampleIndex, int32 OutputEndIndex);
125 void StereoDeinterleavedResamplingCore(const float* InputLeft, const float* InputRight, float* OutputLeft, float* OutputRight, int32& OutInputFrameIndexFP, uint32& OutInputFrameRatioFP, int32 OutputSampleIndex, int32 OutputEndIndex);
126
127 template<typename OutputBufferType, typename OutputChannelType>
128 int32 ProcessCircularBufferGeneric(FMultichannelCircularBuffer& InAudio, OutputBufferType& OutAudio);
129
130 static const int32 FPScale;
131 static const float FPScaleFloat;
132
133 int32 CurrentInputFrameIndexFP = 0;
134 uint32 CurrentFrameRatioFP = 0;
135 uint32 TargetFrameRatioFP = 0;
136 int32 FrameRatioFrameDeltaFP = 0;
137 int32 NumFramesToInterpolate = 0;
138
141 TArray<float*, TInlineAllocator<2>> TempOutputPointers;
142 };
143}
144
145#undef UE_API
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define UE_API
Definition SColorGradingComponentViewer.h:12
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition RuntimeResampler.h:17
UE_API int32 GetNumOutputFramesProducedByInputFrames(int32 InNumInputFrames) const
Definition RuntimeResampler.cpp:136
UE_API int32 GetNumInputFramesNeededToProduceOutputFrames(int32 InNumOutputFrames) const
Definition RuntimeResampler.cpp:122
UE_API int32 ProcessCircularBuffer(FMultichannelCircularBuffer &InAudio, FMultichannelBuffer &OutAudio)
Definition RuntimeResampler.cpp:254
UE_API void SetFrameRatio(float InRatio, int32 InNumFramesToInterpolate=0)
Definition RuntimeResampler.cpp:44
static UE_API const float MaxFrameRatio
Definition RuntimeResampler.h:20
UE_API void ProcessInterleaved(TArrayView< const float > Input, TArrayView< float > Output, int32 &OutNumInputFramesConsumed, int32 &OutNumOutputFramesProduced)
Definition RuntimeResampler.cpp:264
static UE_API const float MinFrameRatio
Definition RuntimeResampler.h:21
Definition ArrayView.h:139
NO_LOGGING.
Definition AudioMixerPlatformAndroid.cpp:53