Navigation
API > API/Runtime > API/Runtime/AudioMixer
| Name | FMixerDevice |
| Type | class |
| Header File | /Engine/Source/Runtime/AudioMixer/Public/AudioMixerDevice.h |
| Include Path | #include "AudioMixerDevice.h" |
Syntax
class FMixerDevice :
public FAudioDevice,
public IAudioMixer,
public FGCObject
Inheritance Hierarchy
- FGCObject → FMixerDevice
- FExec → FAudioDevice → FMixerDevice
Constructors
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
FMixerDevice
(
IAudioMixerPlatformInterface* InAudioMixerPlatform |
AudioMixerDevice.h |
Destructors
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
~FMixerDevice() |
AudioMixerDevice.h |
Variables
Public
| Name | Type | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|---|
| QuantizedEventClockManager | FQuartzClockManager | Clock Manager for quantized event handling on Audio Render Thread. | AudioMixerDevice.h | |
| QuartzPersistentStateCritSec | FCriticalSection | Technically, in editor, multiple UQuartz(World)Subsystem's will reference the same FMixerDevice object. | AudioMixerDevice.h | |
| QuartzSubsystemData | TSharedPtr< FPersistentQuartzSubsystemData, ESPMode::ThreadSafe > | Keep a reference alive to UQuartzSubsystem state that needs to persist across level transitions (UWorld destruction. | AudioMixerDevice.h |
Protected
| Name | Type | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|---|
| AudioClockDelta | double | The time delta for each callback block. | AudioMixerDevice.h | |
| AudioClockTimingData | FAudioClockTimingData | The timing data used to interpolate the audio clock | AudioMixerDevice.h | |
| AudioLinkFactory | IAudioLinkFactory * | AudioMixerDevice.h | ||
| AudioMixerPlatform | IAudioMixerPlatformInterface * | Ptr to the platform interface, which handles streaming audio to the hardware device. | AudioMixerDevice.h | |
| AudioPlatformThreadId | std::atomic< int32 > | ThreadId for the low-level platform audio mixer. | AudioMixerDevice.h | |
| AudioThreadTimingData | FAudioThreadTimingData | Timing data for audio thread. | AudioMixerDevice.h | |
| bDebugOutputEnabled | bool | Whether or not we generate output audio to test multi-platform mixer. | AudioMixerDevice.h | |
| bSubmixRegistrationDisabled | bool | Whether or not initialization of the submix system is underway and submixes can be registered | AudioMixerDevice.h | |
| CommandQueue | TQueue< TFunction< void()> > | Command queue to send commands to audio render thread from game thread or audio thread. | AudioMixerDevice.h | |
| DefaultAudioBuses | TArray< TStrongObjectPtr< UAudioBus > > | AudioMixerDevice.h | ||
| DefaultChannelAzimuthPositions | FChannelPositionInfo | Contains a map of channel/speaker azimuth positions. | AudioMixerDevice.h | |
| DefaultEndpointSubmixes | TArray< FMixerSubmixPtr > | Submixes that will sum their audio and send it directly to AudioMixerPlatform. | AudioMixerDevice.h | |
| DelegateBoundSubmixes | TArray< USoundSubmix * > | Which submixes have been told to envelope follow with this audio device. | AudioMixerDevice.h | |
| DeviceChannelAzimuthPositions | TArray< FChannelPositionInfo > | The azimuth positions for submix channel types. | AudioMixerDevice.h | |
| DeviceOutputChannels | int32 | AudioMixerDevice.h | ||
| EndpointSubmixesMutationLock | FCriticalSection | Contended between RegisterSoundSubmix/UnregisterSoundSubmix on the audio thread and OnProcessAudioStream on the audio mixer thread. | AudioMixerDevice.h | |
| ExternalEndpointSubmixes | TArray< FMixerSubmixPtr > | Submixes that need to be processed, but will be sending their audio to external sends. | AudioMixerDevice.h | |
| GameOrAudioThreadId | int32 | ThreadId for the game thread (or if audio is running a separate thread, that ID) | AudioMixerDevice.h | |
| GameThreadCommandQueue | TMpscQueue< TFunction< void()> > | MPSC command queue to send commands to the game thread | AudioMixerDevice.h | |
| MonoChannelUpmixMethod | EMonoChannelUpmixMethod | What upmix method to use for mono channel upmixing. | AudioMixerDevice.h | |
| OpenStreamParams | FAudioMixerOpenStreamParams | The audio output stream parameters used to initialize the audio hardware. | AudioMixerDevice.h | |
| PanningMethod | EPanningMethod | What panning method to use for panning. | AudioMixerDevice.h | |
| PlatformInfo | FAudioPlatformDeviceInfo | The platform device info for this mixer device. | AudioMixerDevice.h | |
| PreviousPrimaryVolume | float | What the previous master volume was. | AudioMixerDevice.h | |
| RenderScheduler | TUniquePtr< FAudioRenderScheduler > | Scheduler responsible for launching rendering tasks | AudioMixerDevice.h | |
| RequiredSubmixes | TArray< USoundSubmix * > | AudioMixerDevice.h | ||
| RequiredSubmixInstances | TArray< FMixerSubmixPtr > | AudioMixerDevice.h | ||
| SourceEffectChainOverrides | TMap< uint32, TArray< FSourceEffectChainEntry > > | AudioMixerDevice.h | ||
| SourceManager | TUniquePtr< FMixerSourceManager > | The mixer source manager. | AudioMixerDevice.h | |
| SourceVoices | TQueue< FMixerSourceVoice * > | Queue of mixer source voices. | AudioMixerDevice.h | |
| Submixes | FSubmixMap | Map of USoundSubmix static data objects to the dynamic audio mixer submix. | AudioMixerDevice.h |
Functions
Public
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
virtual void AddEnvelopeFollowerDelegate
(
USoundSubmix* InSubmix, |
AudioMixerDevice.h | ||
void AddMainSubmixEffect
(
FSoundEffectSubmixPtr SoundEffect |
Add submix effect to main submix. | AudioMixerDevice.h | |
void AddMasterSubmixEffect
(
FSoundEffectSubmixPtr SoundEffect |
Renamed Main submix: these functions will be deprecated in a future release. | AudioMixerDevice.h | |
virtual FPatchOutputStrongPtr AddPatchForSubmix
(
uint32 InObjectId, |
AudioMixerDevice.h | ||
virtual void AddSpectralAnalysisDelegate
(
USoundSubmix* InSubmix, |
AudioMixerDevice.h | ||
int32 AddSubmixEffect
(
USoundSubmix* InSoundSubmix, |
Add submix effect to given submix. | AudioMixerDevice.h | |
void AudioRenderThreadCommand
(
TFunction< void()> Command |
Pushes the command to a audio render thread command queue to be executed on render thread. | AudioMixerDevice.h | |
void CheckAudioRenderingThread() |
AudioMixerDevice.h | ||
void CheckAudioThread() |
Functions which check the thread it's called on and helps make sure functions are called from correct threads. | AudioMixerDevice.h | |
void ClearMainSubmixEffects() |
Clear all submix effects from main submix. | AudioMixerDevice.h | |
void ClearMasterSubmixEffects() |
AudioMixerDevice.h | ||
virtual void ClearSubmixEffectChainOverride
(
USoundSubmix* InSoundSubmix, |
AudioMixerDevice.h | ||
void ClearSubmixEffects
(
USoundSubmix* InSoundSubmix |
Clear all submix effects from given submix. | AudioMixerDevice.h | |
virtual void CountBytes
(
FArchive& Ar |
AudioMixerDevice.h | ||
virtual FAudioEffectsManager * CreateEffectsManager() |
AudioMixerDevice.h | ||
virtual FSoundSource * CreateSoundSource() |
AudioMixerDevice.h | ||
void DrawSubmixes
(
FOutputDevice& InOutput, |
Debug Commands. | AudioMixerDevice.h | |
virtual void EnableDebugAudioOutput() |
AudioMixerDevice.h | ||
virtual bool Exec
(
UWorld* InWorld, |
AudioMixerDevice.h | ||
virtual void FadeIn() |
AudioMixerDevice.h | ||
virtual void FadeOut() |
AudioMixerDevice.h | ||
FMixerSubmixPtr FindSubmixInstanceByObjectId
(
uint32 InObjectId |
AudioMixerDevice.h | ||
virtual void FlushAudioRenderingCommands
(
bool bPumpSynchronously |
AudioMixerDevice.h | ||
virtual void FlushExtended
(
UWorld* WorldToFlush, |
AudioMixerDevice.h | ||
void GameThreadMPSCCommand
(
TFunction< void()> InCommand |
Pushes the command to a MPSC queue to be executed on the game thread. | AudioMixerDevice.h | |
void Get2DChannelMap
(
bool bIsVorbis, |
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. | AudioMixerDevice.h | |
void Get3DChannelMap
(
const int32 InSubmixNumChannels, |
Builds a 3D channel map for a spatialized source. | AudioMixerDevice.h | |
double GetAudioClockDelta() |
AudioMixerDevice.h | ||
| AudioMixerDevice.h | |||
IAudioLinkFactory * GetAudioLinkFactory() |
AudioLink. | AudioMixerDevice.h | |
IAudioMixerPlatformInterface * GetAudioMixerPlatform() |
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. | AudioMixerDevice.h | |
double GetAudioRenderThreadTime() |
AudioMixerDevice.h | ||
double GetAudioThreadTime() |
Audio thread tick timing relative to audio render thread timing. | AudioMixerDevice.h | |
virtual double GetAudioTime() |
AudioMixerDevice.h | ||
FMixerSubmixWeakPtr GetBaseDefaultSubmix() |
AudioMixerDevice.h | ||
const TArray< EAudioMixerChannel::Type > & GetChannelArray() |
Returns the channel array for the given submix channel type. | AudioMixerDevice.h | |
virtual bool GetCurrentSourceEffectChain
(
const uint32 SourceEffectChainId, |
AudioMixerDevice.h | ||
const FChannelPositionInfo * GetDefaultChannelPositions() |
Retrieves spherical locations of channels for a given submix format. | AudioMixerDevice.h | |
TArray< Audio::FChannelPositionInfo > * GetDefaultPositionMap
(
int32 NumChannels |
AudioMixerDevice.h | ||
int32 GetDeviceOutputChannels() |
AudioMixerDevice.h | ||
int32 GetDeviceSampleRate() |
AudioMixerDevice.h | ||
FMixerSubmixWeakPtr GetEQSubmix() |
AudioMixerDevice.h | ||
ISoundfieldFactory * GetFactoryForSubmixInstance
(
FMixerSubmixWeakPtr& SoundSubmixPtr |
AudioMixerDevice.h | ||
ISoundfieldFactory * GetFactoryForSubmixInstance
(
USoundSubmix* SoundSubmix |
If SoundSubmix is a soundfield submix, this will return the factory used to encode source audio to it's soundfield format. | AudioMixerDevice.h | |
virtual double GetInterpolatedAudioClock() |
AudioMixerDevice.h | ||
const TArray< FTransform > * GetListenerTransforms() |
Retrieves the listener transforms. | AudioMixerDevice.h | |
| AudioMixerDevice.h | |||
FMixerSubmixWeakPtr GetMainSubmix() |
AudioMixerDevice.h | ||
virtual USoundSubmix & GetMainSubmixObject() |
AudioMixerDevice.h | ||
FMixerSubmixWeakPtr GetMasterEQSubmix() |
AudioMixerDevice.h | ||
FMixerSubmixWeakPtr GetMasterReverbSubmix() |
AudioMixerDevice.h | ||
FMixerSubmixWeakPtr GetMasterSubmix() |
AudioMixerDevice.h | ||
FMixerSourceVoice * GetMixerSourceVoice() |
Public Functions. | AudioMixerDevice.h | |
EMonoChannelUpmixMethod GetMonoChannelUpmixMethod() |
AudioMixerDevice.h | ||
virtual int32 GetNumActiveSources() |
AudioMixerDevice.h | ||
int32 GetNumDeviceChannels() |
AudioMixerDevice.h | ||
int32 GetNumDirectOutChannels() |
AudioMixerDevice.h | ||
int32 GetNumOutputBuffers() |
AudioMixerDevice.h | ||
int32 GetNumOutputFrames() |
AudioMixerDevice.h | ||
int32 GetNumSources() |
AudioMixerDevice.h | ||
| AudioMixerDevice.h | |||
const FAudioPlatformDeviceInfo & GetPlatformDeviceInfo() |
AudioMixerDevice.h | ||
virtual FAudioPlatformSettings GetPlatformSettings() |
AudioMixerDevice.h | ||
FAudioRenderScheduler & GetRenderScheduler() |
AudioMixerDevice.h | ||
FMixerSubmixWeakPtr GetReverbSubmix() |
AudioMixerDevice.h | ||
const FMixerSourceManager * GetSourceManager () |
AudioMixerDevice.h | ||
FMixerSourceManager * GetSourceManager () |
AudioMixerDevice.h | ||
FMixerSubmixWeakPtr GetSubmixInstance
(
const USoundSubmixBase* SoundSubmix |
AudioMixerDevice.h | ||
virtual bool HasCompressedAudioInfoClass
(
USoundWave* SoundWave |
AudioMixerDevice.h | ||
virtual bool InitializeHardware() |
AudioMixerDevice.h | ||
bool IsAudioRenderingThread() |
AudioMixerDevice.h | ||
virtual bool IsExernalBackgroundSoundActive() |
AudioMixerDevice.h | ||
virtual bool IsNonRealtime() |
Audio Device Properties. | AudioMixerDevice.h | |
FPatchOutputStrongPtr MakePatch
(
int32 InFrames, |
AudioMixerDevice.h | ||
virtual void OnAudioStreamShutdown() |
AudioMixerDevice.h | ||
virtual bool OnProcessAudioStream
(
FAlignedFloatBuffer& OutputBuffer |
AudioMixerDevice.h | ||
virtual void PauseRecording
(
USoundSubmix* InSubmix |
AudioMixerDevice.h | ||
virtual void RegisterSoundSubmix
(
USoundSubmixBase* SoundSubmix, |
AudioMixerDevice.h | ||
virtual void RegisterSubmixBufferListener
(
TSharedRef< ISubmixBufferListener, ESPMode::ThreadSafe > InSubmixBufferListener, |
AudioMixerDevice.h | ||
virtual void RegisterSubmixBufferListener
(
ISubmixBufferListener* InSubmixBufferListener, |
Submix buffer listener callbacks | AudioMixerDevice.h | |
void ReleaseMixerSourceVoice
(
FMixerSourceVoice* InSourceVoice |
AudioMixerDevice.h | ||
virtual void RemoveEnvelopeFollowerDelegate
(
USoundSubmix* InSubmix, |
AudioMixerDevice.h | ||
void RemoveMainSubmixEffect
(
uint32 SubmixEffectId |
Remove submix effect from main submix. | AudioMixerDevice.h | |
void RemoveMasterSubmixEffect
(
uint32 SubmixEffectId |
AudioMixerDevice.h | ||
virtual void RemoveSpectralAnalysisDelegate
(
USoundSubmix* InSubmix, |
AudioMixerDevice.h | ||
void RemoveSubmixEffect
(
USoundSubmix* InSoundSubmix, |
Remove submix effect to given submix. | AudioMixerDevice.h | |
void RemoveSubmixEffectAtIndex
(
USoundSubmix* InSoundSubmix, |
Remove submix effect at the given submix chain index. | AudioMixerDevice.h | |
void ReplaceSoundEffectSubmix
(
USoundSubmix* InSoundSubmix, |
Replace the submix effect of the given submix at the submix chain index with the new submix effect id and submix instance. | AudioMixerDevice.h | |
virtual void ResumeContext() |
AudioMixerDevice.h | ||
virtual void ResumeRecording
(
USoundSubmix* InSubmix |
AudioMixerDevice.h | ||
virtual void SetSubmixAutoDisable
(
USoundSubmix* InSoundSubmix, |
Submix auto-disable setteings. | AudioMixerDevice.h | |
virtual void SetSubmixAutoDisableTime
(
USoundSubmix* InSoundSubmix, |
AudioMixerDevice.h | ||
virtual void SetSubmixDryLevel
(
USoundSubmix* InSoundSubmix, |
AudioMixerDevice.h | ||
virtual void SetSubmixEffectChainOverride
(
USoundSubmix* InSoundSubmix, |
Submix effect chain override settings. | AudioMixerDevice.h | |
virtual void SetSubmixModulationBaseLevels
(
USoundSubmix* InSoundSubmix, |
AudioMixerDevice.h | ||
virtual void SetSubmixOutputVolume
(
USoundSubmix* InSoundSubmix, |
AudioMixerDevice.h | ||
virtual void SetSubmixWetDryLevel
(
USoundSubmix* InSoundSubmix, |
AudioMixerDevice.h | ||
virtual void SetSubmixWetLevel
(
USoundSubmix* InSoundSubmix, |
AudioMixerDevice.h | ||
virtual void StartEnvelopeFollowing
(
USoundSubmix* InSubmix |
Submix envelope following. | AudioMixerDevice.h | |
virtual void StartRecording
(
USoundSubmix* InSubmix, |
Submix recording callbacks: | AudioMixerDevice.h | |
virtual void StartSpectrumAnalysis
(
USoundSubmix* InSubmix, |
Submix Spectrum Analysis. | AudioMixerDevice.h | |
virtual void StopEnvelopeFollowing
(
USoundSubmix* InSubmix |
AudioMixerDevice.h | ||
virtual Audio::FAlignedFloatBuffer & StopRecording
(
USoundSubmix* InSubmix, |
AudioMixerDevice.h | ||
virtual void StopSpectrumAnalysis
(
USoundSubmix* InSubmix |
AudioMixerDevice.h | ||
virtual void SuspendContext() |
AudioMixerDevice.h | ||
virtual void TeardownHardware() |
AudioMixerDevice.h | ||
virtual void UnregisterSoundSubmix
(
const USoundSubmixBase* SoundSubmix, |
AudioMixerDevice.h | ||
virtual void UnregisterSubmixBufferListener
(
ISubmixBufferListener* InSubmixBufferListener, |
AudioMixerDevice.h | ||
virtual void UnregisterSubmixBufferListener
(
TSharedRef< ISubmixBufferListener, ESPMode::ThreadSafe > InSubmixBufferListener, |
This is optional, and should only be used to manually unregister before the ISubmixBufferListener is getting destroyed (do not call this in the destructor of ISubmixBufferListener or derived classes) | AudioMixerDevice.h | |
virtual void UpdateDeviceDeltaTime() |
AudioMixerDevice.h | ||
virtual void UpdateGameThread() |
AudioMixerDevice.h | ||
virtual void UpdateHardware() |
AudioMixerDevice.h | ||
virtual void UpdateHardwareTiming() |
AudioMixerDevice.h | ||
virtual void UpdateSourceEffectChain
(
const uint32 SourceEffectChainId, |
Updates the source effect chain (using unique object id). | AudioMixerDevice.h | |
virtual void UpdateSubmixModulationSettings
(
USoundSubmix* InSoundSubmix, |
Submix Modulation Settings. | AudioMixerDevice.h | |
virtual void UpdateSubmixProperties
(
USoundSubmixBase* InSubmix |
Submix dry/wet settings. | AudioMixerDevice.h | |
virtual bool ValidateAPICall
(
const TCHAR* Function, |
AudioMixerDevice.h |
Overridden from FGCObject
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
virtual void AddReferencedObjects
(
FReferenceCollector& Collector |
AudioMixerDevice.h | ||
virtual FString GetReferencerName() |
AudioMixerDevice.h |
Protected
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
virtual void InitSoundSubmixes() |
AudioMixerDevice.h | ||
virtual void OnListenerUpdated
(
const TArray< FListener >& InListeners |
AudioMixerDevice.h |
Static
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
static void CreateSynchronizedAudioTaskQueue
(
AudioTaskQueueId QueueId |
Creates a queue for audio decode requests with a specific Id. | AudioMixerDevice.h | |
static void DestroySynchronizedAudioTaskQueue
(
AudioTaskQueueId QueueId, |
Destroys an audio decode task queue. Tasks currently queued up are optionally started. | AudioMixerDevice.h | |
static void Get2DChannelMap
(
bool bIsVorbis, |
AudioMixerDevice.h | ||
static int32 GetChannelMapCacheId
(
const int32 NumSourceChannels, |
AudioMixerDevice.h | ||
static bool IsEndpointSubmix
(
const USoundSubmixBase* InSubmix |
AudioMixerDevice.h | ||
static int KickQueuedTasks
(
AudioTaskQueueId QueueId |
"Kicks" all of the audio decode tasks currentlyt in the queue. | AudioMixerDevice.h |