UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
Audio::FAudioMixerPlatformSwappable Class Referenceabstract

#include <AudioMixer.h>

+ Inheritance diagram for Audio::FAudioMixerPlatformSwappable:

Public Member Functions

UE_API FAudioMixerPlatformSwappable ()
 
virtual ~FAudioMixerPlatformSwappable () override=default
 
virtual UE_API bool RequestDeviceSwap (const FString &DeviceID, const bool bInForce, const TCHAR *InReason) override
 
virtual UE_API bool CheckAudioDeviceChange () override
 
virtual UE_API bool MoveAudioStreamToNewAudioDevice () override
 
virtual UE_API void ResumePlaybackOnNewDevice () override
 
virtual UE_API bool AllowDeviceSwap (const bool bInForceSwap)
 
virtual bool InitializeDeviceSwapContext (const FString &InRequestedDeviceID, const TCHAR *InReason)=0
 
virtual UE_API bool CheckThreadedDeviceSwap ()
 
virtual bool PreDeviceSwap ()
 
virtual void EnqueueAsyncDeviceSwap ()=0
 
virtual void SynchronousDeviceSwap ()=0
 
virtual bool PostDeviceSwap ()
 
- Public Member Functions inherited from Audio::IAudioMixerPlatformInterface
virtual AUDIOMIXERCORE_API ~IAudioMixerPlatformInterface ()
 
virtual FString GetPlatformApi () const =0
 
virtual bool InitializeHardware ()=0
 
virtual bool TeardownHardware ()=0
 
virtual bool IsInitialized () const =0
 
virtual bool GetNumOutputDevices (uint32 &OutNumOutputDevices)
 
virtual bool GetOutputDeviceInfo (const uint32 InDeviceIndex, FAudioPlatformDeviceInfo &OutInfo)=0
 
virtual FString GetCurrentDeviceName () const
 
virtual AUDIOMIXERCORE_API int32 GetIndexForDevice (const FString &InDeviceName)
 
virtual FAudioPlatformSettings GetPlatformSettings () const =0
 
virtual bool GetDefaultOutputDeviceIndex (uint32 &OutDefaultDeviceIndex) const
 
virtual bool OpenAudioStream (const FAudioMixerOpenStreamParams &Params)=0
 
virtual bool CloseAudioStream ()=0
 
virtual bool StartAudioStream ()=0
 
virtual bool StopAudioStream ()=0
 
virtual bool MoveAudioStreamToNewAudioDevice (const FString &InNewDeviceId)
 
virtual FAudioPlatformDeviceInfo GetPlatformDeviceInfo () const =0
 
virtual void SubmitBuffer (const uint8 *Buffer)
 
virtual void SubmitDirectOutBuffer (const int32 InDirectOutIndex, const Audio::FAlignedFloatBuffer &InBuffer)
 
virtual int32 GetNumFrames (const int32 InNumReqestedFrames)
 
virtual bool DisablePCMAudioCaching () const
 
virtual bool SupportsHardwareDecompression () const
 
virtual bool IsNonRealtime () const
 
virtual FString GetDefaultDeviceName ()=0
 
virtual void SuspendContext ()
 
virtual void ResumeContext ()
 
virtual void OnHardwareUpdate ()
 
virtual IAudioPlatformDeviceInfoCacheGetDeviceInfoCache () const
 
virtual bool IsDeviceInfoValid (const FAudioPlatformDeviceInfo &InDeviceInfo) const
 
virtual bool ShouldUseDeviceInfoCache () const
 
AUDIOMIXERCORE_API uint32 Run () override
 
virtual class FSingleThreadRunnableGetSingleThreadInterface () override
 
virtual AUDIOMIXERCORE_API void Tick () override
 
AUDIOMIXERCORE_API IAudioMixerPlatformInterface ()
 
AUDIOMIXERCORE_API void ReadNextBuffer ()
 
virtual AUDIOMIXERCORE_API void FadeIn ()
 
virtual AUDIOMIXERCORE_API void FadeOut ()
 
FString GetLastError () const
 
AUDIOMIXERCORE_API void PostInitializeHardware ()
 
bool GetIsListeningForDeviceEvents () const
 
void SetIsListeningForDeviceEvents (bool bInListeningForDeviceEvents)
 
- Public Member Functions inherited from FRunnable
virtual bool Init ()
 
virtual void Stop ()
 
virtual void Exit ()
 
virtual ~FRunnable ()
 
- Public Member Functions inherited from FSingleThreadRunnable
virtual ~FSingleThreadRunnable ()
 
- Public Member Functions inherited from Audio::IAudioMixerDeviceChangedListener
virtual ~IAudioMixerDeviceChangedListener ()=default
 
virtual void RegisterDeviceChangedListener ()
 
virtual void UnregisterDeviceChangedListener ()
 
virtual void OnDefaultCaptureDeviceChanged (const EAudioDeviceRole InAudioDeviceRole, const FString &DeviceId)
 
virtual void OnDefaultRenderDeviceChanged (const EAudioDeviceRole InAudioDeviceRole, const FString &DeviceId)
 
virtual void OnDeviceAdded (const FString &DeviceId, bool bIsRenderDevice)
 
virtual void OnDeviceRemoved (const FString &DeviceId, bool bIsRenderDevice)
 
virtual void OnDeviceStateChanged (const FString &DeviceId, const EAudioDeviceState InState, bool bIsRenderDevice)
 
virtual void OnFormatChanged (const FString &InDeviceId, const FFormatChangedData &InFormat)
 
virtual void OnSessionDisconnect (EDisconnectReason InReason)
 
virtual FString GetDeviceId () const
 

Protected Member Functions

FString GetOriginalAudioDeviceId () const
 
void SetOriginalAudioDeviceId (const FString &InAudioDeviceId)
 
void SetActiveDeviceSwapFuture (TFuture< TUniquePtr< FDeviceSwapResult > > &&InFuture)
 
void ResetActiveDeviceSwapFuture ()
 
const FDeviceSwapResultGetDeviceSwapResult () const
 
FDeviceSwapResultGetDeviceSwapResult ()
 
- Protected Member Functions inherited from Audio::IAudioMixerPlatformInterface
AUDIOMIXERCORE_API uint32 MainAudioDeviceRun ()
 
virtual AUDIOMIXERCORE_API uint32 RunInternal ()
 
void AudioMixerPlatformLogOnce (const FString &LogDetails, const FString &FileName, int32 LineNumber, ELogVerbosity::Type InVerbosity=ELogVerbosity::Error)
 
AUDIOMIXERCORE_API void BeginGeneratingAudio ()
 
AUDIOMIXERCORE_API void StopGeneratingAudio ()
 
AUDIOMIXERCORE_API void ApplyMasterAttenuation (TArrayView< const uint8 > &InOutPoppedAudio)
 
AUDIOMIXERCORE_API void ApplyPrimaryAttenuation (TArrayView< const uint8 > &InOutPoppedAudio)
 
template<typename BufferType >
void ApplyAttenuationInternal (TArrayView< BufferType > &InOutBuffer)
 
AUDIOMIXERCORE_API void StartRunningNullDevice ()
 
AUDIOMIXERCORE_API void StopRunningNullDevice ()
 
AUDIOMIXERCORE_API void CreateNullDeviceThread (const TFunction< void()> InCallback, float InBufferDuration, bool bShouldPauseOnStart)
 

Additional Inherited Members

- Public Types inherited from Audio::IAudioMixerDeviceChangedListener
enum class  EDisconnectReason {
  DeviceRemoval , ServerShutdown , FormatChanged , SessionLogoff ,
  SessionDisconnected , ExclusiveModeOverride
}
 
- Static Public Member Functions inherited from Audio::IAudioMixerPlatformInterface
static AUDIOMIXERCORE_API bool GetChannelTypeAtIndex (const int32 Index, EAudioMixerChannel::Type &OutType)
 
- Protected Attributes inherited from Audio::IAudioMixerPlatformInterface
FAudioOutputStreamInfo AudioStreamInfo
 
FAudioMixerOpenStreamParams OpenStreamParams
 
Audio::FOutputBuffer OutputBuffer
 
bool bWarnedBufferUnderrun
 
TUniquePtr< FRunnableThreadAudioRenderThread
 
FEventAudioRenderEvent
 
FCriticalSection DeviceSwapCriticalSection
 
FThreadSafeBool bIsInDeviceSwap
 
FEventAudioFadeEvent
 
int32 NumOutputBuffers
 
float FadeVolume
 
FParam FadeParam
 
FString CurrentDeviceName
 
FString LastError
 
int32 CallCounterApplyAttenuationInternal { 0 }
 
int32 CallCounterReadNextBuffer { 0 }
 
FThreadSafeBool bPerformingFade
 
FThreadSafeBool bFadedOut
 
FThreadSafeBool bIsDeviceInitialized
 
FThreadSafeBool bMoveAudioStreamToNewAudioDevice
 
FThreadSafeBool bIsUsingNullDevice
 
FThreadSafeBool bIsGeneratingAudio
 
const int32 InstanceID { -1 }
 
- Static Protected Attributes inherited from Audio::IAudioMixerPlatformInterface
static AUDIOMIXERCORE_API FThreadSafeCounter NextInstanceID
 

Detailed Description

Audio mixer platform objects can subclass this in order to add device swap capabilities.

Constructor & Destructor Documentation

◆ FAudioMixerPlatformSwappable()

Audio::FAudioMixerPlatformSwappable::FAudioMixerPlatformSwappable ( )

◆ ~FAudioMixerPlatformSwappable()

virtual Audio::FAudioMixerPlatformSwappable::~FAudioMixerPlatformSwappable ( )
overridevirtualdefault

Member Function Documentation

◆ AllowDeviceSwap()

bool Audio::FAudioMixerPlatformSwappable::AllowDeviceSwap ( const bool  bInForceSwap)
virtual

Called to determine if the current device swap request should be allowed to proceed.

◆ CheckAudioDeviceChange()

bool Audio::FAudioMixerPlatformSwappable::CheckAudioDeviceChange ( )
overridevirtual

Check if audio device changed if applicable. Return true if audio device changed.

Reimplemented from Audio::IAudioMixerPlatformInterface.

Reimplemented in Audio::FMixerPlatformXAudio2.

◆ CheckThreadedDeviceSwap()

bool Audio::FAudioMixerPlatformSwappable::CheckThreadedDeviceSwap ( )
virtual

Called repeatedly to update an active, async device swap

Reimplemented in Audio::FAudioMixerWasapi, and Audio::FMixerPlatformXAudio2.

◆ EnqueueAsyncDeviceSwap()

virtual void Audio::FAudioMixerPlatformSwappable::EnqueueAsyncDeviceSwap ( )
pure virtual

Kicks of an async device swap task

Implemented in Audio::FAudioMixerWasapi, and Audio::FMixerPlatformXAudio2.

◆ GetDeviceSwapResult() [1/2]

FDeviceSwapResult * Audio::FAudioMixerPlatformSwappable::GetDeviceSwapResult ( )
inlineprotected

◆ GetDeviceSwapResult() [2/2]

const FDeviceSwapResult * Audio::FAudioMixerPlatformSwappable::GetDeviceSwapResult ( ) const
inlineprotected

The results produced from a device swap operation. The containing future retains memory ownership. Will be valid until PostDeviceSwap returns.

◆ GetOriginalAudioDeviceId()

FString Audio::FAudioMixerPlatformSwappable::GetOriginalAudioDeviceId ( ) const
inlineprotected

Used in OnDeviceAdded for determining if an added device is the same as the original device.

◆ InitializeDeviceSwapContext()

virtual bool Audio::FAudioMixerPlatformSwappable::InitializeDeviceSwapContext ( const FString &  InRequestedDeviceID,
const TCHAR InReason 
)
pure virtual

Initializes a new device swap context with the given parameters

Implemented in Audio::FAudioMixerWasapi, and Audio::FMixerPlatformXAudio2.

◆ MoveAudioStreamToNewAudioDevice()

bool Audio::FAudioMixerPlatformSwappable::MoveAudioStreamToNewAudioDevice ( )
overridevirtual

◆ PostDeviceSwap()

virtual bool Audio::FAudioMixerPlatformSwappable::PostDeviceSwap ( )
inlinevirtual

Called after a device swap completes, providing an opportunity for any needed cleanup

Reimplemented in Audio::FAudioMixerWasapi, and Audio::FMixerPlatformXAudio2.

◆ PreDeviceSwap()

virtual bool Audio::FAudioMixerPlatformSwappable::PreDeviceSwap ( )
inlinevirtual

Called at the beginning of a device swap to perform any needed initialization

Reimplemented in Audio::FAudioMixerWasapi, and Audio::FMixerPlatformXAudio2.

◆ RequestDeviceSwap()

bool Audio::FAudioMixerPlatformSwappable::RequestDeviceSwap ( const FString &  DeviceID,
const bool  bInForce,
const TCHAR InReason 
)
overridevirtual

Sends a command to swap which output device is being used

Reimplemented from Audio::IAudioMixerPlatformInterface.

◆ ResetActiveDeviceSwapFuture()

void Audio::FAudioMixerPlatformSwappable::ResetActiveDeviceSwapFuture ( )
inlineprotected

◆ ResumePlaybackOnNewDevice()

void Audio::FAudioMixerPlatformSwappable::ResumePlaybackOnNewDevice ( )
overridevirtual

Resumes playback on new audio device after device change.

Reimplemented from Audio::IAudioMixerPlatformInterface.

◆ SetActiveDeviceSwapFuture()

void Audio::FAudioMixerPlatformSwappable::SetActiveDeviceSwapFuture ( TFuture< TUniquePtr< FDeviceSwapResult > > &&  InFuture)
inlineprotected

Future which holds result of device swap upon completion.

◆ SetOriginalAudioDeviceId()

void Audio::FAudioMixerPlatformSwappable::SetOriginalAudioDeviceId ( const FString &  InAudioDeviceId)
inlineprotected

◆ SynchronousDeviceSwap()

virtual void Audio::FAudioMixerPlatformSwappable::SynchronousDeviceSwap ( )
pure virtual

Performs a device swap synchronously in the current thread

Implemented in Audio::FAudioMixerWasapi, and Audio::FMixerPlatformXAudio2.


The documentation for this class was generated from the following files: