UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ISoundfieldEndpoint.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
6#include "Containers/Array.h"
7#include "CoreMinimal.h"
8#include "CoreTypes.h"
11#include "HAL/CriticalSection.h"
13#include "ISoundfieldFormat.h"
16#include "Templates/UniquePtr.h"
17#include "UObject/NameTypes.h"
18#include "UObject/Object.h"
21
22#include "ISoundfieldEndpoint.generated.h"
23
24class UClass;
26template <typename FuncType> class TFunctionRef;
27
28
45
50UCLASS(config = Engine, abstract, editinlinenew, BlueprintType, MinimalAPI)
58
64{
65public:
70
72
77
84
85 // Returns the amount of ISoundfieldAudioPackets currently buffered for this endpoint.
86 AUDIOEXTENSIONS_API int32 GetNumPacketsBuffer();
87
88 // Returns the amount of ISoundfieldAudioPackets that can be buffered for this endpoint before reaching capacity.
89 AUDIOEXTENSIONS_API int32 GetRemainderInPacketBuffer();
90
94 AUDIOEXTENSIONS_API void ProcessAudioIfNecessary();
95
96protected:
97
104 virtual bool EndpointRequiresCallback() const { return false; }
105
109 virtual float GetDesiredCallbackPeriodicity() const { return 0; }
110
118
128
137
141 AUDIOEXTENSIONS_API void StartRunningCallback();
142 AUDIOEXTENSIONS_API void StopRunningCallback();
143
144 AUDIOEXTENSIONS_API void RunCallbackSynchronously();
145
146private:
147 // Owns a scoped thread and runs OnAudioCallback when StartRunningCallback() is called.
149
150 // This array is used as a non-copying circular buffer for ISoundfieldAudioPackets.
152 FThreadSafeCounter ReadCounter;
153 FThreadSafeCounter WriteCounter;
154
155 // Owns the current settings for this endpoint.
157 FCriticalSection CurrentSettingsCriticalSection;
158};
159
168{
169public:
172 {
173 }
174
177
180 {
181 static FName SoundfieldEndpointName = FName(TEXT("Soundfield Endpoint"));
183 }
184
193
202
207
209
216
219
235
236
241 {
242 return nullptr;
243 }
244
249
250 bool IsEndpointFormat() override { return true; }
251
254};
#define PURE_VIRTUAL(func,...)
Definition CoreMiscDefines.h:103
#define TEXT(x)
Definition Platform.h:1272
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
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UCLASS(...)
Definition ObjectMacros.h:776
Definition Engine.Build.cs:7
Definition NameTypes.h:617
Definition ThreadSafeCounter.h:14
virtual void RegisterModularFeature(const FName Type, class IModularFeature *ModularFeature)=0
static CORE_API IModularFeatures & Get()
Definition ModularFeatures.cpp:9
virtual void UnregisterModularFeature(const FName Type, class IModularFeature *ModularFeature)=0
Definition ISoundfieldFormat.h:104
Definition ISoundfieldEndpoint.h:168
virtual AUDIOEXTENSIONS_API FName GetSoundfieldFormatName() override
Definition ISoundfieldEndpoint.cpp:173
virtual ~ISoundfieldEndpointFactory()
Definition ISoundfieldEndpoint.h:171
virtual TUniquePtr< ISoundfieldEndpoint > CreateNewEndpointInstance(const FAudioPluginInitializationParams &InitInfo, const ISoundfieldEndpointSettingsProxy &InitialSettings)=0
virtual UClass * GetCustomEndpointSettingsClass() const
Definition ISoundfieldEndpoint.h:240
static void RegisterEndpointType(ISoundfieldEndpointFactory *InFactory)
Definition ISoundfieldEndpoint.h:189
virtual FName GetEndpointTypeName()=0
bool IsEndpointFormat() override
Definition ISoundfieldEndpoint.h:250
static void UnregisterEndpointType(ISoundfieldEndpointFactory *InFactory)
Definition ISoundfieldEndpoint.h:198
virtual USoundfieldEndpointSettingsBase * GetDefaultEndpointSettings()=0
static AUDIOEXTENSIONS_API TArray< FName > GetAllSoundfieldEndpointTypes()
Definition ISoundfieldEndpoint.cpp:139
AUDIOEXTENSIONS_API TUniquePtr< ISoundfieldDecoderStream > CreateDecoderStream(const FAudioPluginInitializationParams &InitInfo, const ISoundfieldEncodingSettingsProxy &InitialSettings) override
Definition ISoundfieldEndpoint.cpp:166
static AUDIOEXTENSIONS_API FName DefaultSoundfieldEndpointName()
Definition ISoundfieldEndpoint.cpp:160
static FName GetModularFeatureName()
Definition ISoundfieldEndpoint.h:179
static AUDIOEXTENSIONS_API ISoundfieldEndpointFactory * Get(const FName &InName)
Definition ISoundfieldEndpoint.cpp:117
virtual AUDIOEXTENSIONS_API bool CanTranscodeToSoundfieldFormat(FName DestinationFormat, const ISoundfieldEncodingSettingsProxy &DestinationEncodingSettings) override
Definition ISoundfieldEndpoint.cpp:178
Definition ISoundfieldEndpoint.h:41
virtual ~ISoundfieldEndpointSettingsProxy()
Definition ISoundfieldEndpoint.h:43
Definition ISoundfieldEndpoint.h:64
virtual ~ISoundfieldEndpoint()
Definition ISoundfieldEndpoint.h:71
virtual void OnAudioCallback(TUniquePtr< ISoundfieldAudioPacket > &&InPacket, const ISoundfieldEndpointSettingsProxy *InSettings)
Definition ISoundfieldEndpoint.h:117
virtual float GetDesiredCallbackPeriodicity() const
Definition ISoundfieldEndpoint.h:109
virtual bool EndpointRequiresCallback() const
Definition ISoundfieldEndpoint.h:104
Definition ISoundfieldFormat.h:254
Definition Array.h:670
Definition AssetRegistryState.h:50
Definition UniquePtr.h:107
Definition Class.h:3793
Definition Object.h:95
Definition ISoundfieldEndpoint.h:52
virtual TUniquePtr< ISoundfieldEndpointSettingsProxy > GetProxy() const PURE_VIRTUAL(USoundfieldEndpointSettingsBase
Definition ISoundfieldEndpoint.h:56
Definition IAudioExtensionPlugin.h:127