UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
AudioMixerSubmix.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "AudioBusSubsystem.h"
6#include "AudioMixer.h"
7#include "AudioMixerTrace.h"
8#include "AudioDefines.h"
9#include "CoreMinimal.h"
10#include "SampleBuffer.h"
11#include "IAudioEndpoint.h"
12#include "ISoundfieldEndpoint.h"
13#include "Sound/SoundSubmix.h"
20#include "Stats/Stats.h"
22#include "IAudioLinkFactory.h"
23
24// The time it takes to process the submix graph. Process submix effects, mix into the submix buffer, etc.
26
27// The time it takes to process the endpoint submixes.
29
30// The time it takes to process the submix graph. Process submix effects, mix into the submix buffer, etc.
32
33// The time it takes to process the submix graph. Process submix effects, mix into the submix buffer, etc.
35
36// The time it takes to process the submix graph. Process submix effects, mix into the submix buffer, etc.
38
39// The time it takes to process the submix buffer listeners.
41
42// The time it takes to process the submix soundfield child submixes.
44
45// The time it takes to process the submix soundfield sources.
47
48// The time it takes to process the submix soundfield processors..
50
51// Forward Declarations
54class USoundSubmix;
57
58namespace Audio
59{
61 class FMixerSourceVoice;
62 class FMixerDevice;
63
65 {
66 // Whether to do the send pre distance attenuation
68
69 // Whether to do the send post distance attenuation
71 };
72
84
85 class FMixerSubmix;
86
88 {
90
91 // If the child submix is not a soundfield submix, we may need to encode its audio output in ProcessAudio.
93
94 // If this child submix is a soundfield submix that we can read the output of, we may need to transcode it's audio output.
96
97 // This is filled by either the Encoder or the Transcoder, and passed to this submix' mixer.
99
102
107 };
108
110 {
111 public:
114
115 // Initialize the submix object with the USoundSubmix ptr. Sets up child and parent connects.
117
118 // Returns the mixer submix Id
119 uint32 GetId() const { return Id; }
120
121 // Return the owners name
122 const FString& GetName() const { return SubmixName; }
123
124#if UE_AUDIO_PROFILERTRACE_ENABLED
125 // Return the owners path name
126 const FString& GetPathName() const { return SubmixPathName; }
127#endif // UE_AUDIO_PROFILERTRACE_ENABLED
128
129 // Sets the parent submix to the given submix
131
132 // Adds the given submix to this submix's children
134
135 // Removes the given submix from this submix's children
137
138 // Registers the given audiobus to this submix
140
141 // Unregisters a registered audiobus from this submix (if any)
143
144 // Sets the output level of the submix in linear gain
146
147 // Sets the static output volume of the submix in linear gain
148 AUDIOMIXER_API void SetDryLevel(float InDryLevel);
149
150 // Sets the wet level of the submix in linear gain
151 AUDIOMIXER_API void SetWetLevel(float InWetLevel);
152
153 // Update modulation settings of the submix
155
156 // Update modulation settings of the submix with Decibel values
158
159 FModulationDestination* GetOutputVolumeDestination();
160
161 FModulationDestination* GetWetVolumeDestination();
162
163 // Gets the submix channels channels
165
166 // Gets this submix's parent submix
168
169 // Returns the number of source voices currently a part of this submix.
171
172 // Returns the number of wet effects in this submix.
174
175 // Returns the size of the submix chain.
177
178 // Add (if not already added) or sets the amount of the source voice's send amount
180
182
184 AUDIOMIXER_API void RemoveSourceVoice(FMixerSourceVoice* InSourceVoice);
185
188
191
194
197
200
203
206
209
213 AUDIOMIXER_API bool IsValid() const;
214
215 // Function which processes audio.
218
220
221 // This should be called if this submix doesn't send it's audio to a parent submix,
222 // but rather an external endpoint.
224
225 // Returns the device sample rate this submix is rendering to
227
228 // Returns the output channels this submix is rendering to
230
231 // Returns the number of effects in this submix's effect chain
233
234 // Returns the submix effect at the given effect chain index
236
237 // This must be called on the entire submix graph before calling SetupSoundfieldStreams.
239
240 // updates settings, potentially creating or removing ambisonics streams based on what types of submixes this submix is connected to.
243
246
249
250 // This is called by the corresponding USoundSubmix when StartRecordingOutput is called.
252
253 // This is called by the corresponding USoundSubmix when StopRecordingOutput is called.
255
256 // This is called by the corresponding USoundSubmix when PauseRecording is called.
258
259 // This is called by the corresponding USoundSubmix when ResumeRecording is called.
261
262 // Register buffer listener with this submix
263 // Unregister buffer listener with this submix
264
265 UE_DEPRECATED(5.4, "This function is deprecated. Use RegisterBufferListener version that is provided a shared reference to a listener.")
267
268 UE_DEPRECATED(5.4, "This function is deprecated. Use UnregisterBufferListener version that is provided a shared reference to a listener.")
270
273
274 // Starts envelope following with the given attack time and release time
276
277 // Stops envelope following the submix
279
280 // Adds an envelope follower delegate
282
283 // Removes an existing envelope follower delegate
285
286 // Initializes a new FFT analyzer for this submix and immediately begins feeding audio to it.
288
289 // Terminates whatever FFT Analyzer is being used for this submix.
291
292 // Adds an spectral analysis delegate
294
295 // Removes an existing spectral analysis delegate
297
298 // Gets the most recent magnitude values for each corresponding value in InFrequencies (in Hz).
299 // This requires StartSpectrumAnalysis to be called first.
301
302 // Gets the most recent phase values for each corresponding value in InFrequencies (in Hz).
303 // This requires StartSpectrumAnalysis to be called first.
305
306 // Broadcast the envelope and submix delegates on the game thread
308
309 // returns true if this submix is encoded to a soundfield.
311
312 // returns true if this submix sends it's audio to the default endpoint.
314
315 // Returns true if this submix sends its audio to an IAudioEndpoint.
317
318 // returns true if this submix sends its audio to an ISoundfieldEndpoint.
320
321 //Returns true if this is an endpoint type that should no-op for this platform
323
324 // Returns true if the submix is currently rendering audio. The current rendering time is passed in.
325 AUDIOMIXER_API bool IsRenderingAudio() const;
326
327 // Set whether or not this submix is told to auto disable.
329
330 // Sets the auto-disable time
332
333 // Get a unique key for this submix's format and settings.
334 // If another submix has an identical format and settings it will have an equivalent key.
336
338
340
342
344
347
348 protected:
349 // Initialize the submix internal
351
352 // Down mix the given buffer to the desired down mix channel count
354
356
359
360 // Check to see if we need to decode from ambisonics for parent
362
363 // This sets up the ambisonics positional data for speakers, based on what new format we need to convert to.
365
366 // Encode a source and sum it into the mixed soundfield.
368
370
371 // Calls ProcessAudio on the child submix, performs all necessary conversions and mixes in it's resulting audio.
373
375
377
378 protected:
384
385 // Pump command queue
387
388 // Add command to the command queue
389 AUDIOMIXER_API void SubmixCommand(TFunction<void()> Command);
390
391 // Generates audio from the given effect chain into the given buffer
393
394 // The name of this submix (the owning USoundSubmix) (at top so we can see in debugger it's name)
395 FString SubmixName;
396
397#if UE_AUDIO_PROFILERTRACE_ENABLED
398 // The path name of this submix (the owning USoundSubmix)
399 FString SubmixPathName;
400#endif // UE_AUDIO_PROFILERTRACE_ENABLED
401
402 // This mixer submix's Id
404
405 // Parent submix.
407
408 // Child submixes
410
411 // Struct to hold record keeping data about effect chain overrides
413 {
415
417
418 // If true, this effect override will be fading in or all the way faded in
419 bool bIsCurrentChain = false;
420
421 // If this effect fade info is the base effect
422 bool bIsBaseEffect = false;
423 };
424
425 // The array of submix effect overrides. There may be more than one if multiple are fading out. There should be only one fading in (the current override).
428
429 // Owning mixer device.
431
432 // Map of mixer source voices with a given send level for this submix
434
440
443
448 {
451
453 {
455
456 // As a sanity check, make sure if we've gotten to this point, this DSP processor supports this submix's format.
457 check(InProcessorBase->SupportsFormat(InFactory->GetSoundfieldFormatName()));
458
459 Processor = InProcessorBase->PrivateGetNewProcessor(InSettings);
460
461 // If the processor doesn't have any settings, get the default settings for a processor of this type.
464 {
465 ProcessorSettings = InProcessorBase->PrivateGetDefaultSettings();
466 }
467
468 Settings = ProcessorSettings->PrivateGetProxy();
469 }
470 };
471
473 {
475
476 // This encoder is used for the mixed down audio from all non-soundfield submixes plugged into
477 // this submix. Will not be set up if ISoundfieldFactory::ShouldEncodeAllStreamsIndependently
478 // returns true.
480
481 // Encoder used if a normal submix outputs to this submix.
483
484 // This is the positional data we are decoding
486
487 // Mixes all encoded child submix inputs.
489
490 // This is the packet we mix all input sources and child submixes to.
492
493 // Current settings for this submix.
495
496 // All soundfield processors attached to this submix.
498
499 // This critical section is contended by the soundfield overload of ProcessAudio and SetupSoundfieldStreams.
501
503 : Factory(nullptr)
504 {}
505
506 void Reset()
507 {
508 Factory = nullptr;
510 Mixer.Reset();
511 Settings.Reset();
512 }
513 };
514
516
518 {
519 // For endpoint submixes,
520 // this is the primary method of pushing audio to the endpoint.
522
525
526 // for non-soundfield endpoints, we use these buffers for processing.
531
532 // Number of channels and sample rate for the external endpoint.
535
536 // This is used if the endpoint has a different sample rate than our audio engine.
539
540 // for soundfield endpoints, this is the buffer we use to send audio to the endpoint.
542
544 : NumChannels(0)
545 , SampleRate(0.0f)
547 {}
548
558 };
559
561
568
572
573 float VolumeModBaseDb = 0.f;
575 float WetModBaseDb = 0.f;
576
577 // modifiers set from BP code
578 float VolumeModifier = 1.f;
579 float DryLevelModifier = 1.f;
580 float WetLevelModifier = 1.f;
581
582 // Envelope following data
587
588 // Spectrum analyzer. Created and destroyed on the audio thread.
592
593 // This buffer is used to downmix the submix output to mono before submitting it to the SpectrumAnalyzer.
595
596 // The dry channel buffer
598
599 // Submix command queue to shuffle commands from audio thread to audio render thread.
601
602 // List of submix buffer listeners. (mutable for pruning stale weak references)
603
605 // Critical section used for modifying and interacting with buffer listeners
607
608 // This buffer is used for recorded output of the submix.
610
611 // Returns the number of submix effects
613
614 // Bool set to true when this submix is recording data.
616
617 // Whether or not this submix is muted.
619
620 // Whether or not auto-disablement is enabled. If true, the submix will disable itself.
622
623 // Whether or not the submix is currently rendering audio. I.e. audio was sent to it and mixing it, or any of its child submixes are rendering audio.
625
626 // Whether or not we're currently disabled (i.e. the submix has been silent)
628
629 // The time to wait to disable the submix if the auto-disablement is active.
631
632 // The time that the first full silent buffer was detected in the submix. Submix will auto-disable if the timeout is reached and the submix has bAutoDisable set to true.
634
635 // Bool set to true when envelope following is enabled
637
638 // Multi-cast delegate to broadcast envelope data from this submix instance
640
645
674
676
677 // Bool set to true when spectrum analysis is enabled
679
680 // Critical section used for when we are appending recorded data.
682
683 // Critical section for mutation of the effect chain.
685
686 // Handle back to the owning USoundSubmix. Used when the device is shutdown to prematurely end a recording.
688
690
692
693 friend class FMixerDevice;
694
695 private:
696 AUDIOMIXER_API void SendAudioToRegisteredAudioBuses(FAlignedFloatBuffer& OutAudioBuffer);
697
698 void UnregisterBufferListenerInternal(UPTRINT ListenerBufferPtr);
699
700 void PruneSubmixBufferListeners();
701
702 // Registered audio buses
704 FAlignedFloatBuffer AudioBusSendBuffer;
705 };
706}
OODEFFUNC typedef const int const char * function
Definition oodle2.h:710
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define check(expr)
Definition AssertionMacros.h:314
#define MIN_VOLUME_DECIBELS
Definition AudioDefines.h:33
#define AUDIO_MIXER_MAX_OUTPUT_CHANNELS
Definition AudioMixer.h:69
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
FPlatformTypes::UPTRINT UPTRINT
An unsigned integer the same size as a pointer.
Definition Platform.h:1146
#define DECLARE_CYCLE_STAT_WITH_FLAGS_EXTERN(CounterName, StatId, GroupId, StatFlags, API)
Definition Stats.h:680
#define DECLARE_CYCLE_STAT_EXTERN(CounterName, StatId, GroupId, API)
Definition Stats.h:679
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
void Init()
Definition LockFreeList.h:4
ESPMode
Definition SharedPointerFwd.h:12
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition EnvelopeFollower.h:226
Definition EnvelopeFollower.h:323
Definition AudioMixerDevice.h:117
Definition AudioMixerSubmix.h:110
AUDIOMIXER_API int32 GetNumEffects() const
Definition AudioMixerSubmix.cpp:638
AUDIOMIXER_API void InitInternal()
Definition AudioMixerSubmix.cpp:344
AUDIOMIXER_API void StartEnvelopeFollowing(int32 AttackTime, int32 ReleaseTime)
Definition AudioMixerSubmix.cpp:2333
float WetModBaseDb
Definition AudioMixerSubmix.h:575
uint8 bIsSilent
Definition AudioMixerSubmix.h:624
AUDIOMIXER_API int32 GetNumChainEffects()
Definition AudioMixerSubmix.cpp:2072
FAlignedFloatBuffer EffectChainOutputBuffer
Definition AudioMixerSubmix.h:427
uint32 Id
Definition AudioMixerSubmix.h:403
AUDIOMIXER_API void StartSpectrumAnalysis(const FSoundSpectrumAnalyzerSettings &InSettings)
Definition AudioMixerSubmix.cpp:2428
AUDIOMIXER_API void GetPhaseForFrequencies(const TArray< float > &InFrequencies, TArray< float > &OutPhases)
Definition AudioMixerSubmix.cpp:2547
AUDIOMIXER_API ISoundfieldEncodingSettingsProxy & GetSoundfieldSettings()
Definition AudioMixerSubmix.cpp:1112
AUDIOMIXER_API void AddOrSetSourceVoice(FMixerSourceVoice *InSourceVoice, const float SendLevel, EMixerSourceSubmixSendStage InSubmixSendStage)
Definition AudioMixerSubmix.cpp:656
AUDIOMIXER_API void ClearSoundEffectSubmixes()
Definition AudioMixerSubmix.cpp:779
FAlignedFloatBuffer SubmixChainMixBuffer
Definition AudioMixerSubmix.h:436
AUDIOMIXER_API void RemoveSoundEffectSubmixAtIndex(int32 InIndex)
Definition AudioMixerSubmix.cpp:757
AUDIOMIXER_API void UpdateModulationSettings(const TSet< TObjectPtr< USoundModulatorBase > > &InOutputModulators, const TSet< TObjectPtr< USoundModulatorBase > > &InWetLevelModulators, const TSet< TObjectPtr< USoundModulatorBase > > &InDryLevelModulators)
Definition AudioMixerSubmix.cpp:2607
AUDIOMIXER_API void StopEnvelopeFollowing()
Definition AudioMixerSubmix.cpp:2366
FCriticalSection RecordingCriticalSection
Definition AudioMixerSubmix.h:681
float EnvelopeValues[AUDIO_MIXER_MAX_OUTPUT_CHANNELS]
Definition AudioMixerSubmix.h:583
AUDIOMIXER_API bool IsExternalEndpointSubmix() const
Definition AudioMixerSubmix.cpp:1078
TArray< TWeakPtr< ISubmixBufferListener > > BufferListenerPtrs
Definition AudioMixerSubmix.h:604
AUDIOMIXER_API TUniquePtr< ISoundfieldTranscodeStream > GetTranscoderForChildSubmix(const TSharedPtr< Audio::FMixerSubmix, ESPMode::ThreadSafe > &InChildSubmix)
Definition AudioMixerSubmix.cpp:1146
AUDIOMIXER_API void SendAudioToSubmixBufferListeners(FAlignedFloatBuffer &OutAudioBuffer)
Definition AudioMixerSubmix.cpp:1735
float VolumeModifier
Definition AudioMixerSubmix.h:578
AUDIOMIXER_API FSoundEffectSubmixPtr GetSubmixEffect(const int32 InIndex)
Definition AudioMixerSubmix.cpp:2085
AUDIOMIXER_API void AddEnvelopeFollowerDelegate(const FOnSubmixEnvelopeBP &OnSubmixEnvelopeBP)
Definition AudioMixerSubmix.cpp:2383
FAlignedFloatBuffer SourceInputBuffer
Definition AudioMixerSubmix.h:439
const FString & GetName() const
Definition AudioMixerSubmix.h:122
AUDIOMIXER_API int32 GetSizeOfSubmixChain() const
Definition AudioMixerSubmix.cpp:643
float CurrentDryLevel
Definition AudioMixerSubmix.h:566
AUDIOMIXER_API void SetupSoundfieldEncodersForChildren()
Definition AudioMixerSubmix.cpp:905
float VolumeModBaseDb
Definition AudioMixerSubmix.h:573
FAlignedFloatBuffer RecordingData
Definition AudioMixerSubmix.h:609
AUDIOMIXER_API int32 GetNumOutputChannels() const
Definition AudioMixerSubmix.cpp:2067
AUDIOMIXER_API void SetModulationBaseLevels(float InVolumeModBaseDb, float InWetModeBaseDb, float InDryModBaseDb)
Definition AudioMixerSubmix.cpp:2614
FMixerDevice * MixerDevice
Definition AudioMixerSubmix.h:430
double SilenceTimeStartSeconds
Definition AudioMixerSubmix.h:633
uint8 bIsRecording
Definition AudioMixerSubmix.h:615
float CurrentWetLevel
Definition AudioMixerSubmix.h:564
uint8 bAutoDisable
Definition AudioMixerSubmix.h:621
FCriticalSection EnvelopeCriticalSection
Definition AudioMixerSubmix.h:586
AUDIOMIXER_API ISoundfieldFactory * GetSoundfieldFactory()
Definition AudioMixerSubmix.cpp:2727
FAlignedFloatBuffer MonoMixBuffer
Definition AudioMixerSubmix.h:594
int32 EnvelopeNumChannels
Definition AudioMixerSubmix.h:585
uint8 bIsBackgroundMuted
Definition AudioMixerSubmix.h:618
uint32 GetId() const
Definition AudioMixerSubmix.h:119
AUDIOMIXER_API void RemoveSourceVoice(FMixerSourceVoice *InSourceVoice)
Definition AudioMixerSubmix.cpp:678
FAlignedFloatBuffer InputBuffer
Definition AudioMixerSubmix.h:437
AUDIOMIXER_API void MixInChildSubmix(FChildSubmixInfo &Child, ISoundfieldAudioPacket &PacketToSumTo)
Definition AudioMixerSubmix.cpp:999
virtual AUDIOMIXER_API ~FMixerSubmix()
Definition AudioMixerSubmix.cpp:266
AUDIOMIXER_API void SetupSoundfieldEncodingForChild(FChildSubmixInfo &InChild)
Definition AudioMixerSubmix.cpp:918
FThreadSafeBool bIsEnvelopeFollowing
Definition AudioMixerSubmix.h:636
TArray< FSpectrumAnalysisDelegateInfo > SpectralAnalysisDelegates
Definition AudioMixerSubmix.h:675
TUniquePtr< IAudioLink > AudioLinkInstance
Definition AudioMixerSubmix.h:691
AUDIOMIXER_API void RegisterAudioBus(const Audio::FAudioBusKey &InAudioBusKey, Audio::FPatchInput &&InPatchInput)
Definition AudioMixerSubmix.cpp:594
AUDIOMIXER_API void SetOutputVolume(float InOutputLevel)
Definition AudioMixerSubmix.cpp:2592
AUDIOMIXER_API void AddSoundEffectSubmix(FSoundEffectSubmixPtr InSoundEffectSubmix)
Definition AudioMixerSubmix.cpp:694
AUDIOMIXER_API FSoundfieldSpeakerPositionalData GetDefaultPositionalDataForAudioDevice()
Definition AudioMixerSubmix.cpp:1134
AUDIOMIXER_API void GetMagnitudeForFrequencies(const TArray< float > &InFrequencies, TArray< float > &OutMagnitudes)
Definition AudioMixerSubmix.cpp:2502
TMap< FMixerSourceVoice *, FSubmixVoiceData > MixerSourceVoices
Definition AudioMixerSubmix.h:433
AUDIOMIXER_API void SetBackgroundMuted(bool bInMuted)
Definition AudioMixerSubmix.cpp:874
AUDIOMIXER_API int32 GetNumSourceVoices() const
Definition AudioMixerSubmix.cpp:633
AUDIOMIXER_API void ClearSubmixEffectChainOverride(float InFadeTimeSec)
Definition AudioMixerSubmix.cpp:837
FAlignedFloatBuffer DownmixedBuffer
Definition AudioMixerSubmix.h:438
FCriticalSection EffectChainMutationCriticalSection
Definition AudioMixerSubmix.h:684
AUDIOMIXER_API bool IsValid() const
Definition AudioMixerSubmix.cpp:1199
AUDIOMIXER_API void ProcessAudioAndSendToEndpoint()
Definition AudioMixerSubmix.cpp:1952
float TargetDryLevel
Definition AudioMixerSubmix.h:567
AUDIOMIXER_API TWeakPtr< FMixerSubmix, ESPMode::ThreadSafe > GetParentSubmix()
Definition AudioMixerSubmix.cpp:628
FModulationDestination VolumeMod
Definition AudioMixerSubmix.h:569
AUDIOMIXER_API void ResumeRecordingOutput()
Definition AudioMixerSubmix.cpp:2297
AUDIOMIXER_API FSoundfieldEncodingKey GetKeyForSubmixEncoding()
Definition AudioMixerSubmix.cpp:2721
TArray< FSubmixEffectFadeInfo > EffectChains
Definition AudioMixerSubmix.h:426
AUDIOMIXER_API void RemoveSoundEffectSubmix(uint32 SubmixPresetId)
Definition AudioMixerSubmix.cpp:735
AUDIOMIXER_API void PumpCommandQueue()
Definition AudioMixerSubmix.cpp:1185
AUDIOMIXER_API void SetUpSoundfieldPositionalData(const TSharedPtr< Audio::FMixerSubmix, ESPMode::ThreadSafe > &InParentSubmix)
Definition AudioMixerSubmix.cpp:967
AUDIOMIXER_API void UnregisterBufferListener(ISubmixBufferListener *BufferListener)
Definition AudioMixerSubmix.cpp:2320
AUDIOMIXER_API bool IsSoundfieldSubmix() const
Definition AudioMixerSubmix.cpp:1068
AUDIOMIXER_API bool IsDefaultEndpointSubmix() const
Definition AudioMixerSubmix.cpp:1073
AUDIOMIXER_API void RemoveSpectralAnalysisDelegate(const FOnSubmixSpectralAnalysisBP &OnSubmixSpectralAnalysisBP)
Definition AudioMixerSubmix.cpp:2411
FAlignedFloatBuffer DryChannelBuffer
Definition AudioMixerSubmix.h:597
int32 NumChannels
Definition AudioMixerSubmix.h:441
int32 NumSamples
Definition AudioMixerSubmix.h:442
TWeakPtr< FMixerSubmix, ESPMode::ThreadSafe > ParentSubmix
Definition AudioMixerSubmix.h:406
AUDIOMIXER_API void SetupEndpoint(IAudioEndpointFactory *InFactory, const UAudioEndpointSettingsBase *InSettings)
Definition AudioMixerSubmix.cpp:2174
AUDIOMIXER_API bool IsSoundfieldEndpointSubmix() const
Definition AudioMixerSubmix.cpp:1083
AUDIOMIXER_API void AddSpectralAnalysisDelegate(const FSoundSpectrumAnalyzerDelegateSettings &InDelegateSettings, const FOnSubmixSpectralAnalysisBP &OnSubmixSpectralAnalysisBP)
Definition AudioMixerSubmix.cpp:2393
float DryLevelModifier
Definition AudioMixerSubmix.h:579
FEndpointData EndpointData
Definition AudioMixerSubmix.h:560
float DryModBaseDb
Definition AudioMixerSubmix.h:574
float WetLevelModifier
Definition AudioMixerSubmix.h:580
AUDIOMIXER_API void RemoveChildSubmix(TWeakPtr< FMixerSubmix, ESPMode::ThreadSafe > SubmixWeakPtr)
Definition AudioMixerSubmix.cpp:577
float CurrentOutputVolume
Definition AudioMixerSubmix.h:562
FModulationDestination WetLevelMod
Definition AudioMixerSubmix.h:571
FModulationDestination * GetWetVolumeDestination()
Definition AudioMixerSubmix.cpp:2626
AUDIOMIXER_API FAlignedFloatBuffer & OnStopRecordingOutput(float &OutNumChannels, float &OutSampleRate)
Definition AudioMixerSubmix.cpp:2277
AUDIOMIXER_API FName GetSoundfieldFormat() const
Definition AudioMixerSubmix.cpp:1100
AUDIOMIXER_API void ReplaceSoundEffectSubmix(int32 InIndex, FSoundEffectSubmixPtr InEffectInstance)
Definition AudioMixerSubmix.cpp:857
Audio::FEnvelopeFollower EnvelopeFollower
Definition AudioMixerSubmix.h:584
FAlignedFloatBuffer ScratchBuffer
Definition AudioMixerSubmix.h:435
AUDIOMIXER_API void TeardownSoundfieldStreams()
Definition AudioMixerSubmix.cpp:2163
AUDIOMIXER_API void UpdateEndpointSettings(TUniquePtr< IAudioEndpointSettingsProxy > &&InSettings)
Definition AudioMixerSubmix.cpp:2252
AUDIOMIXER_API void UnregisterAudioBus(const Audio::FAudioBusKey &InAudioBusKey)
Definition AudioMixerSubmix.cpp:610
uint8 bIsCurrentlyDisabled
Definition AudioMixerSubmix.h:627
AUDIOMIXER_API bool GenerateEffectChainAudio(FSoundEffectSubmixInputData &InputData, const FAlignedFloatBuffer &InAudioBuffer, TArray< FSoundEffectSubmixPtr > &InEffectChain, FAlignedFloatBuffer &OutBuffer)
Definition AudioMixerSubmix.cpp:1804
AUDIOMIXER_API void MixBufferDownToMono(const FAlignedFloatBuffer &InBuffer, int32 NumInputChannels, FAlignedFloatBuffer &OutBuffer)
Definition AudioMixerSubmix.cpp:882
AUDIOMIXER_API void SetAutoDisableTime(float InAutoDisableTime)
Definition AudioMixerSubmix.cpp:1260
AUDIOMIXER_API void SetupSoundfieldStreamForParent()
Definition AudioMixerSubmix.cpp:953
TSharedPtr< FAsyncSpectrumAnalyzer, ESPMode::ThreadSafe > SpectrumAnalyzer
Definition AudioMixerSubmix.h:591
FModulationDestination * GetOutputVolumeDestination()
Definition AudioMixerSubmix.cpp:2621
Audio::FPatchSplitter PatchSplitter
Definition AudioMixerSubmix.h:689
AUDIOMIXER_API FPatchOutputStrongPtr AddPatch(float InGain)
Definition AudioMixerSubmix.cpp:667
AUDIOMIXER_API void UpdateListenerRotation(const FQuat &InRotation)
Definition AudioMixerSubmix.cpp:994
const TMap< uint32, FChildSubmixInfo > & GetChildren() const
Definition AudioMixerSubmix.h:346
AUDIOMIXER_API void PauseRecordingOutput()
Definition AudioMixerSubmix.cpp:2286
TWeakPtr< FMixerSubmix, ESPMode::ThreadSafe > GetParent() const
Definition AudioMixerSubmix.h:345
AUDIOMIXER_API void ProcessAudio(FAlignedFloatBuffer &OutAudio)
Definition AudioMixerSubmix.cpp:1265
TWeakObjectPtr< const USoundSubmixBase > OwningSubmixObject
Definition AudioMixerSubmix.h:687
AUDIOMIXER_API void SetWetLevel(float InWetLevel)
Definition AudioMixerSubmix.cpp:2602
AUDIOMIXER_API void SetupSoundfieldStreams(const USoundfieldEncodingSettingsBase *SoundfieldSettings, TArray< USoundfieldEffectBase * > &Processors, ISoundfieldFactory *InSoundfieldFactory)
Definition AudioMixerSubmix.cpp:2106
AUDIOMIXER_API void MixInSource(const ISoundfieldAudioPacket &InAudio, const ISoundfieldEncodingSettingsProxy &InSettings, ISoundfieldAudioPacket &PacketToSumTo)
Definition AudioMixerSubmix.cpp:980
int32 NumSubmixEffects
Definition AudioMixerSubmix.h:612
AUDIOMIXER_API void SetSubmixEffectChainOverride(const TArray< FSoundEffectSubmixPtr > &InSubmixEffectPresetChain, float InFadeTimeSec)
Definition AudioMixerSubmix.cpp:819
AUDIOMIXER_API void SubmixCommand(TFunction< void()> Command)
Definition AudioMixerSubmix.cpp:1194
AUDIOMIXER_API void BroadcastDelegates()
Definition AudioMixerSubmix.cpp:2631
FOnSubmixEnvelope OnSubmixEnvelope
Definition AudioMixerSubmix.h:639
AUDIOMIXER_API int32 GetSampleRate() const
Definition AudioMixerSubmix.cpp:2062
TMap< uint32, FChildSubmixInfo > ChildSubmixes
Definition AudioMixerSubmix.h:409
FString SubmixName
Definition AudioMixerSubmix.h:395
FCriticalSection SpectrumAnalyzerCriticalSection
Definition AudioMixerSubmix.h:589
AUDIOMIXER_API void SetParentSubmix(TWeakPtr< FMixerSubmix, ESPMode::ThreadSafe > Submix)
Definition AudioMixerSubmix.cpp:527
AUDIOMIXER_API void AddChildSubmix(TWeakPtr< FMixerSubmix, ESPMode::ThreadSafe > Submix)
Definition AudioMixerSubmix.cpp:558
AUDIOMIXER_API bool IsRenderingAudio() const
Definition AudioMixerSubmix.cpp:1204
AUDIOMIXER_API bool IsDummyEndpointSubmix() const
Definition AudioMixerSubmix.cpp:1088
double AutoDisableTime
Definition AudioMixerSubmix.h:630
float TargetWetLevel
Definition AudioMixerSubmix.h:565
static AUDIOMIXER_API void DownmixBuffer(const int32 InChannels, const FAlignedFloatBuffer &InBuffer, const int32 OutChannels, FAlignedFloatBuffer &OutNewBuffer)
Definition AudioMixerSubmix.cpp:520
FThreadSafeBool bIsSpectrumAnalyzing
Definition AudioMixerSubmix.h:678
FSoundSpectrumAnalyzerSettings SpectrumAnalyzerSettings
Definition AudioMixerSubmix.h:590
AUDIOMIXER_API FAudioPluginInitializationParams GetInitializationParamsForSoundfieldStream()
Definition AudioMixerSubmix.cpp:1120
FSoundfieldStreams SoundfieldStreams
Definition AudioMixerSubmix.h:515
AUDIOMIXER_API void SetDryLevel(float InDryLevel)
Definition AudioMixerSubmix.cpp:2597
AUDIOMIXER_API void StopSpectrumAnalysis()
Definition AudioMixerSubmix.cpp:2493
AUDIOMIXER_API void RemoveEnvelopeFollowerDelegate(const FOnSubmixEnvelopeBP &OnSubmixEnvelopeBP)
Definition AudioMixerSubmix.cpp:2388
FCriticalSection BufferListenerCriticalSection
Definition AudioMixerSubmix.h:606
AUDIOMIXER_API void RegisterBufferListener(ISubmixBufferListener *BufferListener)
Definition AudioMixerSubmix.cpp:2307
float TargetOutputVolume
Definition AudioMixerSubmix.h:563
AUDIOMIXER_API void SetAutoDisable(bool bInAutoDisable)
Definition AudioMixerSubmix.cpp:1255
AUDIOMIXER_API void OnStartRecordingOutput(float ExpectedDuration)
Definition AudioMixerSubmix.cpp:2270
FModulationDestination DryLevelMod
Definition AudioMixerSubmix.h:570
TQueue< TFunction< void()> > CommandQueue
Definition AudioMixerSubmix.h:600
AUDIOMIXER_API int32 GetSubmixChannels() const
Definition AudioMixerSubmix.cpp:623
AUDIOMIXER_API void SetSoundfieldFactory(ISoundfieldFactory *InSoundfieldFactory)
Definition AudioMixerSubmix.cpp:2101
Definition MultithreadedPatching.h:96
Definition MultithreadedPatching.h:204
Definition AudioResampler.h:72
Definition AudioDynamicParameter.h:10
Definition NameTypes.h:617
Definition UnrealTemplate.h:321
Definition ThreadSafeBool.h:17
Definition IAudioEndpoint.h:202
Definition ISoundfieldFormat.h:137
Definition ISoundfieldFormat.h:104
Definition ISoundfieldEndpoint.h:168
Definition ISoundfieldFormat.h:254
Definition ISubmixBufferListener.h:13
Definition Array.h:670
void Reset(SizeType NewSize=0)
Definition Array.h:2246
Definition AndroidPlatformMisc.h:14
Definition UnrealString.h.inl:34
Definition Queue.h:48
Definition SharedPointer.h:153
Definition UniquePtr.h:107
void Reset(T *InPtr=nullptr)
Definition UniquePtr.h:346
Definition SharedPointer.h:1295
Definition IAudioEndpoint.h:54
Definition IAudioModulation.h:223
Definition SoundSubmix.h:174
Definition SoundSubmix.h:334
Definition ISoundfieldFormat.h:384
Definition ISoundfieldFormat.h:352
Definition ISoundfieldFormat.h:124
Definition ISoundfieldEndpoint.h:52
NO_LOGGING.
Definition AudioMixerPlatformAndroid.cpp:53
EMixerSourceSubmixSendStage
Definition AudioMixerSubmix.h:65
@ PostDistanceAttenuation
Definition AudioMixerSubmix.h:67
@ PreDistanceAttenuation
Definition AudioMixerSubmix.h:70
TArray< float, FAudioBufferAlignedAllocator > FAlignedFloatBuffer
Definition AlignedBuffer.h:22
TSharedPtr< FPatchOutput, ESPMode::ThreadSafe > FPatchOutputStrongPtr
Definition AudioDevice.h:69
@ false
Definition radaudio_common.h:23
Definition AudioBusSubsystem.h:22
Definition AudioMixerSubmix.h:88
TUniquePtr< ISoundfieldTranscodeStream > Transcoder
Definition AudioMixerSubmix.h:95
TUniquePtr< ISoundfieldEncoderStream > Encoder
Definition AudioMixerSubmix.h:92
TUniquePtr< ISoundfieldAudioPacket > IncomingPacketToTranscode
Definition AudioMixerSubmix.h:98
FChildSubmixInfo()
Definition AudioMixerSubmix.h:100
TWeakPtr< FMixerSubmix, ESPMode::ThreadSafe > SubmixPtr
Definition AudioMixerSubmix.h:89
FChildSubmixInfo(TWeakPtr< FMixerSubmix, ESPMode::ThreadSafe > SubmixWeakPtr)
Definition AudioMixerSubmix.h:103
Definition AudioMixerSubmix.h:518
FAlignedFloatBuffer AudioBuffer
Definition AudioMixerSubmix.h:527
float SampleRate
Definition AudioMixerSubmix.h:534
void Reset()
Definition AudioMixerSubmix.h:549
Audio::FPatchInput Input
Definition AudioMixerSubmix.h:521
TUniquePtr< ISoundfieldEndpoint > SoundfieldEndpoint
Definition AudioMixerSubmix.h:524
FAlignedFloatBuffer DownmixChannelMap
Definition AudioMixerSubmix.h:530
TUniquePtr< ISoundfieldAudioPacket > AudioPacket
Definition AudioMixerSubmix.h:541
FAlignedFloatBuffer DownmixedResampledAudioBuffer
Definition AudioMixerSubmix.h:529
TUniquePtr< IAudioEndpoint > NonSoundfieldEndpoint
Definition AudioMixerSubmix.h:523
FEndpointData()
Definition AudioMixerSubmix.h:543
Audio::FResampler Resampler
Definition AudioMixerSubmix.h:537
bool bShouldResample
Definition AudioMixerSubmix.h:538
FAlignedFloatBuffer ResampledAudioBuffer
Definition AudioMixerSubmix.h:528
int32 NumChannels
Definition AudioMixerSubmix.h:533
TUniquePtr< ISoundfieldEffectSettingsProxy > Settings
Definition AudioMixerSubmix.h:449
FSoundfieldEffectProcessorData(ISoundfieldFactory *InFactory, ISoundfieldEncodingSettingsProxy &InSettings, USoundfieldEffectBase *InProcessorBase)
Definition AudioMixerSubmix.h:452
TUniquePtr< ISoundfieldEffectInstance > Processor
Definition AudioMixerSubmix.h:450
Definition AudioMixerSubmix.h:473
FCriticalSection StreamsLock
Definition AudioMixerSubmix.h:500
TUniquePtr< ISoundfieldMixerStream > Mixer
Definition AudioMixerSubmix.h:488
TUniquePtr< ISoundfieldEncoderStream > DownmixedChildrenEncoder
Definition AudioMixerSubmix.h:479
void Reset()
Definition AudioMixerSubmix.h:506
FSoundfieldSpeakerPositionalData CachedPositionalData
Definition AudioMixerSubmix.h:485
TUniquePtr< ISoundfieldEncodingSettingsProxy > Settings
Definition AudioMixerSubmix.h:494
ISoundfieldFactory * Factory
Definition AudioMixerSubmix.h:474
TUniquePtr< ISoundfieldDecoderStream > ParentDecoder
Definition AudioMixerSubmix.h:482
FSoundfieldStreams()
Definition AudioMixerSubmix.h:502
TUniquePtr< ISoundfieldAudioPacket > MixedDownAudio
Definition AudioMixerSubmix.h:491
TArray< FSoundfieldEffectProcessorData > EffectProcessors
Definition AudioMixerSubmix.h:497
Definition AudioMixerSubmix.h:642
FInlineEnvelopeFollower EnvelopeFollower
Definition AudioMixerSubmix.h:643
TArray< FSpectralAnalysisBandInfo > SpectralBands
Definition AudioMixerSubmix.h:653
TUniquePtr< ISpectrumBandExtractor > SpectrumBandExtractor
Definition AudioMixerSubmix.h:652
FOnSubmixSpectralAnalysis OnSubmixSpectralAnalysis
Definition AudioMixerSubmix.h:650
FSpectrumAnalysisDelegateInfo()
Definition AudioMixerSubmix.h:658
~FSpectrumAnalysisDelegateInfo()
Definition AudioMixerSubmix.h:670
FSpectrumAnalysisDelegateInfo(FSpectrumAnalysisDelegateInfo &&Other)
Definition AudioMixerSubmix.h:662
float LastUpdateTime
Definition AudioMixerSubmix.h:655
FSoundSpectrumAnalyzerDelegateSettings DelegateSettings
Definition AudioMixerSubmix.h:648
float UpdateDelta
Definition AudioMixerSubmix.h:656
Definition AudioMixerSubmix.h:380
FString Descriptor
Definition AudioMixerSubmix.h:382
ISubmixBufferListener * Listener
Definition AudioMixerSubmix.h:381
Definition AudioMixerSubmix.h:413
bool bIsCurrentChain
Definition AudioMixerSubmix.h:419
FDynamicParameter FadeVolume
Definition AudioMixerSubmix.h:416
bool bIsBaseEffect
Definition AudioMixerSubmix.h:422
TArray< FSoundEffectSubmixPtr > EffectChain
Definition AudioMixerSubmix.h:414
Definition SoundModulationDestination.h:161
Definition AudioMixerSubmix.h:74
float SendLevel
Definition AudioMixerSubmix.h:75
EMixerSourceSubmixSendStage SubmixSendStage
Definition AudioMixerSubmix.h:76
FSubmixVoiceData()
Definition AudioMixerSubmix.h:78
Definition IAudioExtensionPlugin.h:127
Definition SoundEffectSubmix.h:44
Definition SoundSubmix.h:126
Definition SoundSubmix.h:108
Definition ISoundfieldFormat.h:429
Definition ISoundfieldFormat.h:161
Definition ObjectPtr.h:488
Definition WeakObjectPtrTemplates.h:25