UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
AudioMixerDevice.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Audio.h"
6#include "AudioMixer.h"
7#include "AudioDevice.h"
9#include "Sound/SoundSubmix.h"
14#include "UObject/GCObject.h"
16
17// Forward Declarations
19class IAudioMixerPlatformInterface;
22
23#include "AudioMixerDevice.generated.h"
24
25UENUM()
27{
28 Main = 0,
29 BaseDefault = 1,
30 Reverb = 2,
31 EQ = 3,
32 Count = 4 UMETA(Hidden)
33};
34
35
36namespace Audio
37{
38 // Audio Namespace Forward Declarations
39 class FMixerSourceManager;
40 class FMixerSourceVoice;
41 class FMixerSubmix;
42 class FAudioFormatSettings;
43 class FAudioRenderScheduler;
44
47
70
73 {
75 double UpdateTime = 0.0;
76
78 double GetInterpolatedAudioClock(const double InAudioClock, const double InAudioClockDelta) const;
79 };
80
81 // Deprecated, use ERequiredSubmixes above
82 namespace EMasterSubmixType
83 {
92 }
93
95 {
96 public:
100
105 void Reset();
107 private:
109
110 mutable FCriticalSection MutationLock;
111 };
112
113
115 public IAudioMixer,
116 public FGCObject
117 {
118 public:
121
122 //~ Begin FAudioDevice
123 AUDIOMIXER_API virtual void UpdateDeviceDeltaTime() override;
125 AUDIOMIXER_API virtual bool InitializeHardware() override;
126 AUDIOMIXER_API virtual void FadeIn() override;
127 AUDIOMIXER_API virtual void FadeOut() override;
128 AUDIOMIXER_API virtual void TeardownHardware() override;
129 AUDIOMIXER_API virtual void UpdateHardwareTiming() override;
130 AUDIOMIXER_API virtual void UpdateGameThread() override;
131 AUDIOMIXER_API virtual void UpdateHardware() override;
132 AUDIOMIXER_API virtual double GetAudioTime() const override;
133 AUDIOMIXER_API virtual double GetInterpolatedAudioClock() const override;
137 AUDIOMIXER_API virtual bool ValidateAPICall(const TCHAR* Function, uint32 ErrorCode) override;
138#if UE_ALLOW_EXEC_COMMANDS
139 AUDIOMIXER_API virtual bool Exec(UWorld* InWorld, const TCHAR* Cmd, FOutputDevice& Ar) override;
140#endif
141 AUDIOMIXER_API virtual void CountBytes(class FArchive& Ar) override;
142 AUDIOMIXER_API virtual bool IsExernalBackgroundSoundActive() override;
143 AUDIOMIXER_API virtual void ResumeContext() override;
144 AUDIOMIXER_API virtual void SuspendContext() override;
145 AUDIOMIXER_API virtual void EnableDebugAudioOutput() override;
147 AUDIOMIXER_API virtual void RegisterSoundSubmix(USoundSubmixBase* SoundSubmix, bool bInit = true) override;
148 AUDIOMIXER_API virtual void UnregisterSoundSubmix(const USoundSubmixBase* SoundSubmix, const bool bReparentChildren) override;
149
150 AUDIOMIXER_API virtual int32 GetNumActiveSources() const override;
151
152 // Updates the source effect chain (using unique object id).
153 AUDIOMIXER_API virtual void UpdateSourceEffectChain(const uint32 SourceEffectChainId, const TArray<FSourceEffectChainEntry>& SourceEffectChain, const bool bPlayEffectChainTails) override;
155
156 // Submix dry/wet settings
158 AUDIOMIXER_API virtual void SetSubmixWetDryLevel(USoundSubmix* InSoundSubmix, float InOutputVolume, float InWetLevel, float InDryLevel) override;
159 AUDIOMIXER_API virtual void SetSubmixOutputVolume(USoundSubmix* InSoundSubmix, float InOutputVolume) override;
160 AUDIOMIXER_API virtual void SetSubmixWetLevel(USoundSubmix* InSoundSubmix, float InWetLevel) override;
161 AUDIOMIXER_API virtual void SetSubmixDryLevel(USoundSubmix* InSoundSubmix, float InDryLevel) override;
162
163 // Submix auto-disable setteings
166
167 // Submix Modulation Settings
170
171 // Submix effect chain override settings
174
175 // Submix recording callbacks:
178
181
182 // Submix envelope following
187
188 // Submix Spectrum Analysis
195
196 // Submix buffer listener callbacks
197 UE_DEPRECATED(5.4, "Use RegisterSubmixBufferListener version that requires a shared reference to a listener and provide explicit reference to a submix: use GetMainSubmixObject to register with the Main Output Submix (rather than nullptr for safety), and instantiate buffer listener via the shared pointer API.")
199
200 UE_DEPRECATED(5.4, "Use UnregisterSubmixBufferListener version that requires a shared reference to a listener and provide explicit reference to a submix: use GetMainSubmixObject to unregister from the Main Output Submix (rather than nullptr for safety), and instantiate buffer listener via the shared pointer API.")
202
204
205 // This is optional, and should only be used to manually unregister before the ISubmixBufferListener is getting destroyed
206 // (do not call this in the destructor of ISubmixBufferListener or derived classes)
208
210
212 AUDIOMIXER_API virtual void FlushAudioRenderingCommands(bool bPumpSynchronously = false) override;
213
214 // Audio Device Properties
215 AUDIOMIXER_API virtual bool IsNonRealtime() const override;
216
217 //~ End FAudioDevice
218
219 //~ Begin IAudioMixer
220 AUDIOMIXER_API virtual bool OnProcessAudioStream(FAlignedFloatBuffer& OutputBuffer) override;
221 AUDIOMIXER_API virtual void OnAudioStreamShutdown() override;
222 //~ End IAudioMixer
223
224 //~ Begin FGCObject
225 AUDIOMIXER_API virtual void AddReferencedObjects(FReferenceCollector& Collector) override;
226 virtual FString GetReferencerName() const override
227 {
228 return TEXT("Audio::FMixerDevice");
229 }
230 //~End FGCObject
231
233
235
236 // If SoundSubmix is a soundfield submix, this will return the factory used to encode
237 // source audio to it's soundfield format.
238 // Otherwise, returns nullptr.
241
242 // Functions which check the thread it's called on and helps make sure functions are called from correct threads
243 AUDIOMIXER_API void CheckAudioThread() const;
246
247 // Public Functions
251
252 // AudioLink
254
255 const FAudioPlatformDeviceInfo& GetPlatformDeviceInfo() const { return PlatformInfo; };
256
257 inline int32 GetNumDeviceChannels() const { return PlatformInfo.NumChannels; }
258 inline int32 GetNumDirectOutChannels() const { return PlatformInfo.NumDirectOutChannels; }
259
261
263
264 // Retrieve a pointer to the currently active platform. Only use this if you know what you are doing. The returned IAudioMixerPlatformInterface will only be alive as long as this FMixerDevice is alive.
265 IAudioMixerPlatformInterface* GetAudioMixerPlatform() const { return AudioMixerPlatform; }
266
267 // Builds a 3D channel map for a spatialized source.
269
270 // Builds a channel gain matrix for a non-spatialized source. The non-static variation of this function queries AudioMixerDevice->NumOutputChannels directly which may not be thread safe.
271 AUDIOMIXER_API void Get2DChannelMap(bool bIsVorbis, const int32 NumSourceChannels, const bool bIsCenterChannelOnly, Audio::FAlignedFloatBuffer& OutChannelMap) const;
272 AUDIOMIXER_API static void Get2DChannelMap(bool bIsVorbis, const int32 NumSourceChannels, const int32 NumOutputChannels, const bool bIsCenterChannelOnly, Audio::FAlignedFloatBuffer& OutChannelMap);
273
276
279
280 AUDIOMIXER_API virtual USoundSubmix& GetMainSubmixObject() const override;
281
286
287 // Renamed Main submix: these functions will be deprecated in a future release
294
295 // Add submix effect to main submix
297
298 // Remove submix effect from main submix
300
301 // Clear all submix effects from main submix
303
304 // Add submix effect to given submix
306
307 // Remove submix effect to given submix
309
310 // Remove submix effect at the given submix chain index
312
313 // Replace the submix effect of the given submix at the submix chain index with the new submix effect id and submix instance
315
316 // Clear all submix effects from given submix
318
319 // Returns the channel array for the given submix channel type
321
322 // Retrieves the listener transforms
324
325 // Retrieves spherical locations of channels for a given submix format
327
328 // Audio thread tick timing relative to audio render thread timing
329 double GetAudioThreadTime() const { return AudioThreadTimingData.AudioThreadTime; }
330 double GetAudioRenderThreadTime() const { return AudioThreadTimingData.AudioRenderThreadTime; }
331 double GetAudioClockDelta() const { return AudioClockDelta; }
332
333 EMonoChannelUpmixMethod GetMonoChannelUpmixMethod() const { return MonoChannelUpmixMethod; }
334
336
338
340
341 // Clock Manager for quantized event handling on Audio Render Thread
343
344 // Keep a reference alive to UQuartzSubsystem state that needs to persist across level transitions (UWorld destruction
346
347 // Technically, in editor, multiple UQuartz(World)Subsystem's will reference the same FMixerDevice object.
348 // We need to protect around mutation/access of the "shared" state.
349 // (in practice this should be low/zero contention)
351
352 // Pushes the command to a audio render thread command queue to be executed on render thread
354
355 // Pushes the command to a MPSC queue to be executed on the game thread
357
358 // Debug Commands
360
362 {
363 return *RenderScheduler;
364 }
365
366 protected:
367 AUDIOMIXER_API virtual void InitSoundSubmixes() override;
368
370
372
373 private:
374 // Resets the thread ID used for audio rendering
375 void ResetAudioRenderingThreadId();
376
377 void RebuildSubmixLinks(const USoundSubmixBase& SoundSubmix, FMixerSubmixPtr& SubmixInstance);
378
379 void InitializeChannelMaps();
380 static int32 GetChannelMapCacheId(const int32 NumSourceChannels, const int32 NumOutputChannels, const bool bIsCenterChannelOnly);
381 void CacheChannelMap(const int32 NumSourceChannels, const int32 NumOutputChannels, const bool bIsCenterChannelOnly);
382 void InitializeChannelAzimuthMap(const int32 NumChannels);
383
384 void WhiteNoiseTest(FAlignedFloatBuffer& Output);
385 void SineOscTest(FAlignedFloatBuffer& Output);
386
387 bool IsMainAudioDevice() const;
388
390 void LoadPluginSoundSubmixes();
391 void LoadSoundSubmix(USoundSubmixBase& SoundSubmix);
392
393 void InitSoundfieldAndEndpointDataForSubmix(const USoundSubmixBase& InSoundSubmix, FMixerSubmixPtr MixerSubmix, bool bAllowReInit);
394
395 void UnloadSoundSubmix(const USoundSubmixBase& SoundSubmix, const bool bReparentChildren);
396
397 bool IsRequiredSubmixType(const USoundSubmixBase* InSubmix) const;
398 FMixerSubmixPtr GetRequiredSubmixInstance(uint32 InSubmixId) const;
399 FMixerSubmixPtr GetRequiredSubmixInstance(const USoundSubmixBase* InSubmix) const;
400
401 // Pumps the audio render thread command queue
402 void PumpCommandQueue();
403 void PumpGameThreadCommandQueue();
404
406 void UpdateAudioClock();
407
408#if UE_AUDIO_PROFILERTRACE_ENABLED
409 void OnTraceStarted(FTraceAuxiliary::EConnectionType TraceType, const FString& TraceDestination);
412
415
418
421#endif // UE_AUDIO_PROFILERTRACE_ENABLED
422
423 TArray<USoundSubmix*> RequiredSubmixes;
424 TArray<FMixerSubmixPtr> RequiredSubmixInstances;
425
426 TArray<TStrongObjectPtr<UAudioBus>> DefaultAudioBuses;
428 IAudioMixerPlatformInterface* AudioMixerPlatform;
429
432
434 TArray<FChannelPositionInfo> DeviceChannelAzimuthPositions;
435
436 int32 DeviceOutputChannels;
437
439 EMonoChannelUpmixMethod MonoChannelUpmixMethod;
440
442 EPanningMethod PanningMethod;
443
445 FAudioMixerOpenStreamParams OpenStreamParams;
446
448 double AudioClockDelta;
449
451 FAudioClockTimingData AudioClockTimingData;
452
454 float PreviousPrimaryVolume;
455
457 FAudioThreadTimingData AudioThreadTimingData;
458
460 FAudioPlatformDeviceInfo PlatformInfo;
461
463 FSubmixMap Submixes;
464
465 // Submixes that will sum their audio and send it directly to AudioMixerPlatform.
466 // Submixes are added to this list in RegisterSoundSubmix, and removed in UnregisterSoundSubmix.
467 TArray<FMixerSubmixPtr> DefaultEndpointSubmixes;
468
469 // Submixes that need to be processed, but will be sending their audio to external sends.
470 // Submixes are added to this list in RegisterSoundSubmix and removed in UnregisterSoundSubmix.
471 TArray<FMixerSubmixPtr> ExternalEndpointSubmixes;
472
473 // Contended between RegisterSoundSubmix/UnregisterSoundSubmix on the audio thread and OnProcessAudioStream on the audio mixer thread.
474 FCriticalSection EndpointSubmixesMutationLock;
475
477 TArray<USoundSubmix*> DelegateBoundSubmixes;
478
480 TQueue<FMixerSourceVoice*> SourceVoices;
481
482 TMap<uint32, TArray<FSourceEffectChainEntry>> SourceEffectChainOverrides;
483
485 TUniquePtr<FAudioRenderScheduler> RenderScheduler;
486
489
491 mutable int32 GameOrAudioThreadId;
492
494 mutable std::atomic<int32> AudioPlatformThreadId;
495
497 TQueue<TFunction<void()>> CommandQueue;
498
500 TMpscQueue<TFunction<void()>> GameThreadCommandQueue;
501
502 IAudioLinkFactory* AudioLinkFactory = nullptr;
503
504#if UE_AUDIO_PROFILERTRACE_ENABLED
507
508 double SubmixesAlivePingTimeSec = 0.0;
509 static constexpr double SubmixesAlivePingWaitTimeSec = 1.0;
510#endif // UE_AUDIO_PROFILERTRACE_ENABLED
511
513 bool bDebugOutputEnabled;
514
516 bool bSubmixRegistrationDisabled;
517
518 public:
519
520 // Creates a queue for audio decode requests with a specific Id. Tasks
521 // created with this Id will not be started immediately upon creation,
522 // but will instead be queued up to await a start "kick" later.
524
525 // Destroys an audio decode task queue. Tasks currently queued up are
526 // optionally started.
528
529 // "Kicks" all of the audio decode tasks currentlyt in the queue.
531 };
532}
533
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
ERequiredSubmixes
Definition AudioMixerDevice.h:27
EPanningMethod
Definition AudioSettings.h:30
EMonoChannelUpmixMethod
Definition AudioSettings.h:41
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
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 UMETA(...)
Definition ObjectMacros.h:747
#define UENUM(...)
Definition ObjectMacros.h:749
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition AudioRenderScheduler.h:75
Definition AudioMixerDevice.h:117
virtual AUDIOMIXER_API void UnregisterSubmixBufferListener(ISubmixBufferListener *InSubmixBufferListener, USoundSubmix *InSubmix=nullptr) override
Definition AudioMixerDevice.cpp:3051
virtual AUDIOMIXER_API void EnableDebugAudioOutput() override
Definition AudioMixerDevice.cpp:1128
virtual AUDIOMIXER_API void ResumeContext() override
Definition AudioMixerDevice.cpp:1118
AUDIOMIXER_API FMixerSubmixWeakPtr GetEQSubmix()
Definition AudioMixerDevice.cpp:1587
AUDIOMIXER_API const FChannelPositionInfo * GetDefaultChannelPositions() const
Definition AudioMixerChannelMaps.cpp:264
virtual AUDIOMIXER_API void FadeOut() override
Definition AudioMixerDevice.cpp:890
FAudioRenderScheduler & GetRenderScheduler() const
Definition AudioMixerDevice.h:361
virtual AUDIOMIXER_API void FadeIn() override
Definition AudioMixerDevice.cpp:885
AUDIOMIXER_API int32 AddSubmixEffect(USoundSubmix *InSoundSubmix, FSoundEffectSubmixPtr SoundEffect)
Definition AudioMixerDevice.cpp:1641
virtual AUDIOMIXER_API double GetAudioTime() const override
Definition AudioMixerDevice.cpp:1063
virtual AUDIOMIXER_API double GetInterpolatedAudioClock() const override
Definition AudioMixerDevice.cpp:1068
static AUDIOMIXER_API bool IsEndpointSubmix(const USoundSubmixBase *InSubmix)
Definition AudioMixerDevice.cpp:682
virtual AUDIOMIXER_API bool IsExernalBackgroundSoundActive() override
Definition AudioMixerDevice.cpp:1113
virtual AUDIOMIXER_API void StopEnvelopeFollowing(USoundSubmix *InSubmix) override
Definition AudioMixerDevice.cpp:2715
AUDIOMIXER_API int32 GetNumSources() const
Definition AudioMixerDevice.cpp:2370
virtual AUDIOMIXER_API void SetSubmixDryLevel(USoundSubmix *InSoundSubmix, float InDryLevel) override
Definition AudioMixerDevice.cpp:1859
virtual AUDIOMIXER_API void UpdateHardware() override
Definition AudioMixerDevice.cpp:960
AUDIOMIXER_API void AddMainSubmixEffect(FSoundEffectSubmixPtr SoundEffect)
Definition AudioMixerDevice.cpp:1602
virtual AUDIOMIXER_API void FlushExtended(UWorld *WorldToFlush, bool bClearActivatedReverb)
Definition AudioMixerDevice.cpp:3108
AUDIOMIXER_API FMixerSubmixWeakPtr GetBaseDefaultSubmix()
Definition AudioMixerDevice.cpp:1573
virtual AUDIOMIXER_API void StartRecording(USoundSubmix *InSubmix, float ExpectedRecordingDuration) override
Definition AudioMixerDevice.cpp:2576
AUDIOMIXER_API IAudioLinkFactory * GetAudioLinkFactory() const
Definition AudioMixerDevice.cpp:2375
virtual AUDIOMIXER_API bool IsNonRealtime() const override
Definition AudioMixerDevice.cpp:599
AUDIOMIXER_API void AudioRenderThreadCommand(TFunction< void()> Command)
Definition AudioMixerDevice.cpp:2000
AUDIOMIXER_API void CheckAudioRenderingThread() const
Definition AudioMixerDevice.cpp:583
virtual AUDIOMIXER_API void UpdateHardwareTiming() override
Definition AudioMixerDevice.cpp:944
IAudioMixerPlatformInterface * GetAudioMixerPlatform() const
Definition AudioMixerDevice.h:265
virtual AUDIOMIXER_API void OnAudioStreamShutdown() override
Definition AudioMixerDevice.cpp:1263
AUDIOMIXER_API void ReplaceSoundEffectSubmix(USoundSubmix *InSoundSubmix, int32 InSubmixChainIndex, FSoundEffectSubmixPtr SoundEffect)
Definition AudioMixerDevice.cpp:1686
virtual AUDIOMIXER_API void UpdateSubmixProperties(USoundSubmixBase *InSubmix) override
Definition AudioMixerDevice.cpp:1764
AUDIOMIXER_API int32 GetDeviceSampleRate() const
Definition AudioMixerDevice.cpp:3140
AUDIOMIXER_API bool IsAudioRenderingThread() const
Definition AudioMixerDevice.cpp:593
AUDIOMIXER_API void RemoveSubmixEffectAtIndex(USoundSubmix *InSoundSubmix, int32 SubmixChainIndex)
Definition AudioMixerDevice.cpp:1674
AUDIOMIXER_API FMixerSubmixWeakPtr GetMasterSubmix()
Definition AudioMixerDevice.cpp:1563
virtual AUDIOMIXER_API void FlushAudioRenderingCommands(bool bPumpSynchronously=false) override
Definition AudioMixerDevice.cpp:2032
virtual AUDIOMIXER_API bool InitializeHardware() override
Definition AudioMixerDevice.cpp:711
virtual AUDIOMIXER_API void SuspendContext() override
Definition AudioMixerDevice.cpp:1123
virtual AUDIOMIXER_API void RemoveEnvelopeFollowerDelegate(USoundSubmix *InSubmix, const FOnSubmixEnvelopeBP &OnSubmixEnvelopeBP) override
Definition AudioMixerDevice.cpp:2777
virtual AUDIOMIXER_API void StartSpectrumAnalysis(USoundSubmix *InSubmix, const FSoundSpectrumAnalyzerSettings &InSettings) override
Definition AudioMixerDevice.cpp:2807
FCriticalSection QuartzPersistentStateCritSec
Definition AudioMixerDevice.h:350
virtual AUDIOMIXER_API int32 GetNumActiveSources() const override
Definition AudioMixerDevice.cpp:2380
virtual AUDIOMIXER_API void SetSubmixEffectChainOverride(USoundSubmix *InSoundSubmix, const TArray< FSoundEffectSubmixPtr > &InSubmixEffectPresetChain, float InFadeTimeSec) override
Definition AudioMixerDevice.cpp:1710
AUDIOMIXER_API const TArray< EAudioMixerChannel::Type > & GetChannelArray() const
Definition AudioMixerChannelMaps.cpp:260
AUDIOMIXER_API FMixerSourceVoice * GetMixerSourceVoice()
Definition AudioMixerDevice.cpp:2351
AUDIOMIXER_API FMixerSubmixPtr FindSubmixInstanceByObjectId(uint32 InObjectId)
Definition AudioMixerDevice.cpp:2286
AUDIOMIXER_API void ClearMainSubmixEffects()
Definition AudioMixerDevice.cpp:1633
AUDIOMIXER_API FMixerSubmixWeakPtr GetMainSubmix()
Definition AudioMixerDevice.cpp:1568
virtual AUDIOMIXER_API void UpdateSubmixModulationSettings(USoundSubmix *InSoundSubmix, const TSet< TObjectPtr< USoundModulatorBase > > &InOutputModulation, const TSet< TObjectPtr< USoundModulatorBase > > &InWetLevelModulation, const TSet< TObjectPtr< USoundModulatorBase > > &InDryLevelModulation) override
Definition AudioMixerDevice.cpp:1925
AUDIOMIXER_API void RemoveMasterSubmixEffect(uint32 SubmixEffectId)
Definition AudioMixerDevice.cpp:1623
AUDIOMIXER_API void GameThreadMPSCCommand(TFunction< void()> InCommand)
Definition AudioMixerDevice.cpp:2005
virtual AUDIOMIXER_API void SetSubmixOutputVolume(USoundSubmix *InSoundSubmix, float InOutputVolume) override
Definition AudioMixerDevice.cpp:1815
virtual AUDIOMIXER_API void RegisterSoundSubmix(USoundSubmixBase *SoundSubmix, bool bInit=true) override
Definition AudioMixerDevice.cpp:2093
virtual AUDIOMIXER_API Audio::FAlignedFloatBuffer & StopRecording(USoundSubmix *InSubmix, float &OutNumChannels, float &OutSampleRate) override
Definition AudioMixerDevice.cpp:2606
AUDIOMIXER_API void RemoveMainSubmixEffect(uint32 SubmixEffectId)
Definition AudioMixerDevice.cpp:1615
virtual AUDIOMIXER_API void UnregisterSoundSubmix(const USoundSubmixBase *SoundSubmix, const bool bReparentChildren) override
Definition AudioMixerDevice.cpp:2209
static AUDIOMIXER_API void CreateSynchronizedAudioTaskQueue(AudioTaskQueueId QueueId)
Definition AudioMixerDevice.cpp:3222
AUDIOMIXER_API ~FMixerDevice()
Definition AudioMixerDevice.cpp:365
virtual AUDIOMIXER_API bool OnProcessAudioStream(FAlignedFloatBuffer &OutputBuffer) override
Definition AudioMixerDevice.cpp:1133
virtual AUDIOMIXER_API void PauseRecording(USoundSubmix *InSubmix)
Definition AudioMixerDevice.cpp:2623
AUDIOMIXER_API const TArray< FTransform > * GetListenerTransforms()
Definition AudioMixerDevice.cpp:2571
virtual AUDIOMIXER_API void UpdateGameThread() override
Definition AudioMixerDevice.cpp:952
virtual AUDIOMIXER_API void GetPhasesForFrequencies(USoundSubmix *InSubmix, const TArray< float > &InFrequencies, TArray< float > &OutPhases) override
Definition AudioMixerDevice.cpp:2887
virtual AUDIOMIXER_API void TeardownHardware() override
Definition AudioMixerDevice.cpp:901
AUDIOMIXER_API FMixerSubmixWeakPtr GetSubmixInstance(const USoundSubmixBase *SoundSubmix) const
Definition AudioMixerDevice.cpp:2314
virtual AUDIOMIXER_API void OnListenerUpdated(const TArray< FListener > &InListeners) override
Definition AudioMixerDevice.cpp:563
AUDIOMIXER_API void DrawSubmixes(FOutputDevice &InOutput, const TArray< FString > &InArgs) const
Definition AudioMixerDevice.cpp:295
AUDIOMIXER_API ISoundfieldFactory * GetFactoryForSubmixInstance(USoundSubmix *SoundSubmix)
Definition AudioMixerDevice.cpp:2332
virtual AUDIOMIXER_API USoundSubmix & GetMainSubmixObject() const override
Definition AudioMixerDevice.cpp:2965
virtual AUDIOMIXER_API bool HasCompressedAudioInfoClass(USoundWave *SoundWave) override
Definition AudioMixerDevice.cpp:1083
virtual AUDIOMIXER_API FSoundSource * CreateSoundSource() override
Definition AudioMixerDevice.cpp:1078
AUDIOMIXER_API void ClearMasterSubmixEffects()
Definition AudioMixerDevice.cpp:1628
AUDIOMIXER_API FMixerSubmixWeakPtr GetMasterReverbSubmix()
Definition AudioMixerDevice.cpp:1592
static AUDIOMIXER_API void DestroySynchronizedAudioTaskQueue(AudioTaskQueueId QueueId, bool RunCurrentQueue=false)
Definition AudioMixerDevice.cpp:3227
int32 GetNumDirectOutChannels() const
Definition AudioMixerDevice.h:258
int32 GetNumOutputFrames() const
Definition AudioMixerDevice.h:260
double GetAudioRenderThreadTime() const
Definition AudioMixerDevice.h:330
virtual AUDIOMIXER_API void AddReferencedObjects(FReferenceCollector &Collector) override
Definition AudioMixerDevice.cpp:551
AUDIOMIXER_API void Get3DChannelMap(const int32 InSubmixNumChannels, const FWaveInstance *InWaveInstance, const float EmitterAzimuth, const float NonSpatiliazedFactor, const TMap< EAudioMixerChannel::Type, float > *InOmniMap, float InDefaultOmniValue, Audio::FAlignedFloatBuffer &OutChannelMap)
Definition AudioMixerDevice.cpp:2385
virtual AUDIOMIXER_API void CountBytes(class FArchive &Ar) override
Definition AudioMixerDevice.cpp:1108
virtual AUDIOMIXER_API void InitSoundSubmixes() override
Definition AudioMixerDevice.cpp:1414
virtual AUDIOMIXER_API void StartEnvelopeFollowing(USoundSubmix *InSubmix) override
Definition AudioMixerDevice.cpp:2683
virtual AUDIOMIXER_API void SetSubmixModulationBaseLevels(USoundSubmix *InSoundSubmix, float InVolumeModBase, float InWetModBase, float InDryModBase) override
Definition AudioMixerDevice.cpp:1960
virtual AUDIOMIXER_API FAudioEffectsManager * CreateEffectsManager() override
Definition AudioMixerDevice.cpp:1073
AUDIOMIXER_API void RemoveSubmixEffect(USoundSubmix *InSoundSubmix, uint32 SubmixEffectId)
Definition AudioMixerDevice.cpp:1662
virtual AUDIOMIXER_API void GetAudioDeviceList(TArray< FString > &OutAudioDeviceNames) const override
Definition AudioMixerDevice.cpp:692
virtual AUDIOMIXER_API void SetSubmixWetDryLevel(USoundSubmix *InSoundSubmix, float InOutputVolume, float InWetLevel, float InDryLevel) override
Definition AudioMixerDevice.cpp:1791
double GetAudioThreadTime() const
Definition AudioMixerDevice.h:329
AUDIOMIXER_API void CheckAudioThread() const
Definition AudioMixerDevice.cpp:555
AUDIOMIXER_API TArray< Audio::FChannelPositionInfo > * GetDefaultPositionMap(int32 NumChannels)
Definition AudioMixerDevice.cpp:604
virtual AUDIOMIXER_API void SetSubmixWetLevel(USoundSubmix *InSoundSubmix, float InWetLevel) override
Definition AudioMixerDevice.cpp:1837
static AUDIOMIXER_API int KickQueuedTasks(AudioTaskQueueId QueueId)
Definition AudioMixerDevice.cpp:3232
virtual AUDIOMIXER_API void UpdateSourceEffectChain(const uint32 SourceEffectChainId, const TArray< FSourceEffectChainEntry > &SourceEffectChain, const bool bPlayEffectChainTails) override
Definition AudioMixerDevice.cpp:1734
FQuartzClockManager QuantizedEventClockManager
Definition AudioMixerDevice.h:342
TSharedPtr< FPersistentQuartzSubsystemData, ESPMode::ThreadSafe > QuartzSubsystemData
Definition AudioMixerDevice.h:345
virtual AUDIOMIXER_API bool GetCurrentSourceEffectChain(const uint32 SourceEffectChainId, TArray< FSourceEffectChainEntry > &OutCurrentSourceEffectChainEntries) override
Definition AudioMixerDevice.cpp:1989
virtual AUDIOMIXER_API void RegisterSubmixBufferListener(ISubmixBufferListener *InSubmixBufferListener, USoundSubmix *InSubmix=nullptr) override
Definition AudioMixerDevice.cpp:2973
virtual AUDIOMIXER_API void UpdateDeviceDeltaTime() override
Definition AudioMixerDevice.cpp:687
virtual AUDIOMIXER_API void StopSpectrumAnalysis(USoundSubmix *InSubmix) override
Definition AudioMixerDevice.cpp:2838
virtual AUDIOMIXER_API void ClearSubmixEffectChainOverride(USoundSubmix *InSoundSubmix, float InFadeTimeSec) override
Definition AudioMixerDevice.cpp:1722
AUDIOMIXER_API FPatchOutputStrongPtr MakePatch(int32 InFrames, int32 InChannels, float InGain) const
Definition AudioMixerDevice.cpp:3113
AUDIOMIXER_API FMixerSourceManager * GetSourceManager()
Definition AudioMixerDevice.cpp:3150
const FAudioPlatformDeviceInfo & GetPlatformDeviceInfo() const
Definition AudioMixerDevice.h:255
virtual AUDIOMIXER_API void SetSubmixAutoDisableTime(USoundSubmix *InSoundSubmix, float InDisableTime) override
Definition AudioMixerDevice.cpp:1903
virtual AUDIOMIXER_API bool ValidateAPICall(const TCHAR *Function, uint32 ErrorCode) override
Definition AudioMixerDevice.cpp:1091
virtual AUDIOMIXER_API void ResumeRecording(USoundSubmix *InSubmix)
Definition AudioMixerDevice.cpp:2653
AUDIOMIXER_API void AddMasterSubmixEffect(FSoundEffectSubmixPtr SoundEffect)
Definition AudioMixerDevice.cpp:1610
AUDIOMIXER_API void ClearSubmixEffects(USoundSubmix *InSoundSubmix)
Definition AudioMixerDevice.cpp:1698
AUDIOMIXER_API void Get2DChannelMap(bool bIsVorbis, const int32 NumSourceChannels, const bool bIsCenterChannelOnly, Audio::FAlignedFloatBuffer &OutChannelMap) const
Definition AudioMixerChannelMaps.cpp:32
virtual AUDIOMIXER_API void AddEnvelopeFollowerDelegate(USoundSubmix *InSubmix, const FOnSubmixEnvelopeBP &OnSubmixEnvelopeBP) override
Definition AudioMixerDevice.cpp:2747
AUDIOMIXER_API FMixerSubmixWeakPtr GetReverbSubmix()
Definition AudioMixerDevice.cpp:1582
TArray< FTransform > ListenerTransforms
Definition AudioMixerDevice.h:371
int32 GetNumDeviceChannels() const
Definition AudioMixerDevice.h:257
virtual AUDIOMIXER_API FAudioPlatformSettings GetPlatformSettings() const override
Definition AudioMixerDevice.cpp:1541
virtual AUDIOMIXER_API void SetSubmixAutoDisable(USoundSubmix *InSoundSubmix, bool bInAutoDisable) override
Definition AudioMixerDevice.cpp:1881
int32 GetNumOutputBuffers() const
Definition AudioMixerDevice.h:262
AUDIOMIXER_API FMixerSubmixWeakPtr GetMasterEQSubmix()
Definition AudioMixerDevice.cpp:1597
EMonoChannelUpmixMethod GetMonoChannelUpmixMethod() const
Definition AudioMixerDevice.h:333
virtual AUDIOMIXER_API void GetMagnitudesForFrequencies(USoundSubmix *InSubmix, const TArray< float > &InFrequencies, TArray< float > &OutMagnitudes) override
Definition AudioMixerDevice.cpp:2870
virtual AUDIOMIXER_API void RemoveSpectralAnalysisDelegate(USoundSubmix *InSubmix, const FOnSubmixSpectralAnalysisBP &OnSubmixSpectralAnalysisBP) override
Definition AudioMixerDevice.cpp:2935
AUDIOMIXER_API void ReleaseMixerSourceVoice(FMixerSourceVoice *InSourceVoice)
Definition AudioMixerDevice.cpp:2365
virtual AUDIOMIXER_API void AddSpectralAnalysisDelegate(USoundSubmix *InSubmix, const FSoundSpectrumAnalyzerDelegateSettings &InDelegateSettings, const FOnSubmixSpectralAnalysisBP &OnSubmixSpectralAnalysisBP) override
Definition AudioMixerDevice.cpp:2904
AUDIOMIXER_API int32 GetDeviceOutputChannels() const
Definition AudioMixerDevice.cpp:3145
virtual FString GetReferencerName() const override
Definition AudioMixerDevice.h:226
virtual AUDIOMIXER_API FPatchOutputStrongPtr AddPatchForSubmix(uint32 InObjectId, float InPatchGain) override
Definition AudioMixerDevice.cpp:3124
double GetAudioClockDelta() const
Definition AudioMixerDevice.h:331
Definition AudioMixerSourceManager.h:192
Definition AudioMixerSourceVoice.h:20
Definition AudioMixerClockManager.h:18
Definition AudioMixer.h:479
Definition AudioMixer.h:198
Definition Archive.h:1208
Definition AudioDevice.h:417
FAudioPlatformSettings PlatformSettings
Definition AudioDevice.h:1993
Definition AudioEffect.h:102
virtual CORE_API bool Exec(UWorld *InWorld, const TCHAR *Cmd, FOutputDevice &Ar)
Definition Exec.cpp:30
Definition GCObject.h:128
Definition OutputDevice.h:133
Definition UObjectGlobals.h:2492
Definition Audio.h:627
EConnectionType
Definition TraceAuxiliary.h:78
Definition IAudioLinkFactory.h:21
Definition IConsoleManager.h:558
Definition ISoundfieldFormat.h:254
Definition ISubmixBufferListener.h:13
Definition Array.h:670
Definition AndroidPlatformMisc.h:14
Definition UnrealString.h.inl:34
Definition MpscQueue.h:18
Definition Queue.h:48
Definition SharedPointer.h:692
Definition SharedPointer.h:153
Definition FunctionFwd.h:19
Definition UniquePtr.h:107
Definition SharedPointer.h:1295
Definition IAudioModulation.h:223
Definition SoundSubmix.h:174
Definition SoundSubmix.h:334
Definition SoundWave.h:417
Definition World.h:918
Type
Definition AudioMixerDevice.h:85
@ Master
Definition AudioMixerDevice.h:86
@ Reverb
Definition AudioMixerDevice.h:88
@ BaseDefault
Definition AudioMixerDevice.h:87
@ Count
Definition AudioMixerDevice.h:90
@ EQ
Definition AudioMixerDevice.h:89
NO_LOGGING.
Definition AudioMixerPlatformAndroid.cpp:53
uint32 AudioTaskQueueId
Definition SoundGenerator.h:12
TWeakPtr< FMixerSubmix, ESPMode::ThreadSafe > FMixerSubmixWeakPtr
Definition AudioMixerDevice.h:46
TSharedPtr< FMixerSubmix, ESPMode::ThreadSafe > FMixerSubmixPtr
Definition AudioMixerDevice.h:45
constexpr int32 MaxSupportedChannel
Definition AudioMixer.h:107
Definition AudioMixerDevice.h:73
double GetInterpolatedAudioClock(const double InAudioClock, const double InAudioClockDelta) const
Definition AudioMixerDevice.cpp:3237
double UpdateTime
Definition AudioMixerDevice.h:75
Definition AudioMixer.h:250
Definition AudioMixer.h:152
int32 NumDirectOutChannels
Definition AudioMixer.h:163
int32 NumChannels
Definition AudioMixer.h:160
Definition AudioMixerDevice.h:50
FAudioThreadTimingData()
Definition AudioMixerDevice.h:63
double StartTime
Definition AudioMixerDevice.h:52
double AudioThreadTime
Definition AudioMixerDevice.h:55
double AudioThreadTimeJitterDelta
Definition AudioMixerDevice.h:61
double AudioRenderThreadTime
Definition AudioMixerDevice.h:58
Definition ISoundfieldFormat.h:61
Definition AudioMixerDevice.h:95
TSet< FSubmixMap::FObjectId > GetKeys() const
Definition AudioMixerDevice.cpp:218
uint32 FObjectId
Definition AudioMixerDevice.h:97
void Iterate(FIterFunc InFunction)
Definition AudioMixerDevice.cpp:160
FMixerSubmixPtr FindRef(FObjectId InObjectId) const
Definition AudioMixerDevice.cpp:179
void Reset()
Definition AudioMixerDevice.cpp:205
Definition AudioMixerTypes.h:63
int32 NumBuffers
Definition AudioMixerTypes.h:71
int32 CallbackBufferFrameSize
Definition AudioMixerTypes.h:68
Definition SoftObjectPath.h:56
Definition SoundSubmix.h:126
Definition SoundSubmix.h:108
Definition Audio.h:180
Definition ObjectPtr.h:488
Definition Tuple.h:652