UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
AudioThread.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4 AudioThread.h: Rendering thread definitions.
5=============================================================================*/
6
7#pragma once
8
9#include "CoreMinimal.h"
10#include "Stats/Stats.h"
11
12#include "Tasks/Pipe.h"
13
15// Audio thread API
16// (the naming is outdated as the thread was replaced by piped tasks)
18
20
22{
23private:
25 static bool bUseThreadedAudio;
26
27 static TUniquePtr<UE::Tasks::FTaskEvent> ResumeEvent;
28 static int32 SuspendCount; // accessed only from GT
29
30 // GC callback handles
31 static FDelegateHandle PreGC;
32 static FDelegateHandle PostGC;
33 static FDelegateHandle PreGCDestroy;
34 static FDelegateHandle PostGCDestroy;
35
37 static TStatId CurrentAudioThreadStatId;
38 static TStatId LongestAudioThreadStatId;
39 static double LongestAudioThreadTimeMsec;
40 static FCriticalSection CurrentAudioThreadStatIdCS;
41
43 static void SetCurrentAudioThreadStatId(TStatId InStatId);
44 static void SetLongestTimeAndId(TStatId NewLongestId, double LongestTimeMsec);
45 static double GetCurrentLongestTime() { return LongestAudioThreadTimeMsec; }
46
47 // a helper to apply stats and optional additional logging
48 static TUniqueFunction<void()> GetCommandWrapper(TUniqueFunction<void()> InFunction, const TStatId InStatId);
49
50public:
52 static ENGINE_API void StartAudioThread();
53
55 static ENGINE_API void StopAudioThread();
56
59
61 static ENGINE_API void ProcessAllCommands();
62
65
67 static ENGINE_API bool IsUsingThreadedAudio();
68
69 static ENGINE_API void SuspendAudioThread();
70 static ENGINE_API void ResumeAudioThread();
71
74
76
78};
79
80
94
96// Audio fences
98
103{
104public:
106
112 ENGINE_API void BeginFence();
113
118 ENGINE_API void Wait(bool bProcessGameThreadTasks = false) const;
119
120 // return true if the fence is complete
121 ENGINE_API bool IsFenceComplete() const;
122
123private:
125 mutable UE::Tasks::FTask Fence;
126};
127
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
#define DECLARE_STATS_GROUP(GroupDesc, GroupId, GroupCat)
Definition Stats.h:689
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
Definition AudioThread.h:103
ENGINE_API void Wait(bool bProcessGameThreadTasks=false) const
Definition AudioThread.cpp:714
ENGINE_API ~FAudioCommandFence()
Definition AudioThread.cpp:680
ENGINE_API bool IsFenceComplete() const
Definition AudioThread.cpp:705
ENGINE_API void BeginFence()
Definition AudioThread.cpp:687
Definition AudioThread.h:22
static ENGINE_API FString GetCurrentAudioThreadStatId()
Definition AudioThread.cpp:525
static ENGINE_API bool IsUsingThreadedAudio()
Definition AudioThread.cpp:397
static ENGINE_API void SetUseThreadedAudio(bool bInUseThreadedAudio)
Definition AudioThread.cpp:385
static ENGINE_API void ResetAudioThreadTimers()
Definition AudioThread.cpp:535
static ENGINE_API void ProcessAllCommands()
Definition AudioThread.cpp:560
static ENGINE_API void RunCommandOnAudioThread(TUniqueFunction< void()> InFunction, const TStatId InStatId=TStatId())
Definition AudioThread.cpp:494
static ENGINE_API void SuspendAudioThread()
Definition AudioThread.cpp:329
static ENGINE_API void RunCommandOnGameThread(TUniqueFunction< void()> InFunction, const TStatId InStatId=TStatId())
Definition AudioThread.cpp:572
static ENGINE_API void ResumeAudioThread()
Definition AudioThread.cpp:363
static ENGINE_API void GetLongestTaskInfo(FString &OutLongestTask, double &OutLongestTaskTimeMs)
Definition AudioThread.cpp:549
static ENGINE_API void StopAudioThread()
Definition AudioThread.cpp:654
static ENGINE_API void StartAudioThread()
Definition AudioThread.cpp:629
Definition IDelegateInstance.h:14
Definition FunctionFwd.h:19
Definition UniquePtr.h:107
Definition AudioThread.h:83
~FAudioThreadSuspendContext()
Definition AudioThread.h:89
FAudioThreadSuspendContext()
Definition AudioThread.h:84
Definition LightweightStats.h:416