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

#include <AudioMixerPlatformXAudio2.h>

+ Inheritance diagram for Audio::FMixerPlatformXAudio2:

Public Member Functions

 FMixerPlatformXAudio2 ()
 
virtual ~FMixerPlatformXAudio2 () override
 
virtual FString GetPlatformApi () const override
 
virtual bool InitializeHardware () override
 
virtual bool CheckAudioDeviceChange () override
 
virtual bool TeardownHardware () override
 
virtual bool IsInitialized () const override
 
virtual bool GetNumOutputDevices (uint32 &OutNumOutputDevices) override
 
virtual bool GetOutputDeviceInfo (const uint32 InDeviceIndex, FAudioPlatformDeviceInfo &OutInfo) override
 
virtual FString GetCurrentDeviceName () const override
 
virtual bool GetDefaultOutputDeviceIndex (uint32 &OutDefaultDeviceIndex) const override
 
virtual bool OpenAudioStream (const FAudioMixerOpenStreamParams &Params) override
 
virtual bool CloseAudioStream () override
 
virtual bool StartAudioStream () override
 
virtual bool StopAudioStream () override
 
virtual bool MoveAudioStreamToNewAudioDevice () override
 
virtual FAudioPlatformDeviceInfo GetPlatformDeviceInfo () const override
 
virtual void SubmitBuffer (const uint8 *Buffer) override
 
virtual FString GetDefaultDeviceName () override
 
virtual FAudioPlatformSettings GetPlatformSettings () const override
 
virtual void OnHardwareUpdate () override
 
virtual IAudioPlatformDeviceInfoCacheGetDeviceInfoCache () const override
 
virtual bool IsDeviceInfoValid (const FAudioPlatformDeviceInfo &InDeviceInfo) const override
 
virtual bool ShouldUseDeviceInfoCache () const override
 
virtual void RegisterDeviceChangedListener () override
 
virtual void UnregisterDeviceChangedListener () override
 
virtual void OnDefaultCaptureDeviceChanged (const EAudioDeviceRole InAudioDeviceRole, const FString &DeviceId) override
 
virtual void OnDefaultRenderDeviceChanged (const EAudioDeviceRole InAudioDeviceRole, const FString &DeviceId) override
 
virtual void OnDeviceAdded (const FString &DeviceId, bool bIsRenderDevice) override
 
virtual void OnDeviceRemoved (const FString &DeviceId, bool bIsRenderDevice) override
 
virtual void OnDeviceStateChanged (const FString &DeviceId, const EAudioDeviceState InState, bool bIsRenderDevice) override
 
virtual void OnSessionDisconnect (Audio::IAudioMixerDeviceChangedListener::EDisconnectReason InReason) override
 
virtual FString GetDeviceId () const override
 
virtual bool InitializeDeviceSwapContext (const FString &InRequestedDeviceID, const TCHAR *InReason) override
 
virtual bool CheckThreadedDeviceSwap () override
 
virtual bool PreDeviceSwap () override
 
virtual void EnqueueAsyncDeviceSwap () override
 
virtual void SynchronousDeviceSwap () override
 
virtual bool PostDeviceSwap () override
 
- Public Member Functions inherited from Audio::FAudioMixerPlatformSwappable
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 void ResumePlaybackOnNewDevice () override
 
virtual UE_API bool AllowDeviceSwap (const bool bInForceSwap)
 
- Public Member Functions inherited from Audio::IAudioMixerPlatformInterface
virtual AUDIOMIXERCORE_API ~IAudioMixerPlatformInterface ()
 
virtual AUDIOMIXERCORE_API int32 GetIndexForDevice (const FString &InDeviceName)
 
virtual bool MoveAudioStreamToNewAudioDevice (const FString &InNewDeviceId)
 
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 void SuspendContext ()
 
virtual void ResumeContext ()
 
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 OnFormatChanged (const FString &InDeviceId, const FFormatChangedData &InFormat)
 

Protected Member Functions

virtual uint32 GetCreateFlags () const
 
virtual bool ShouldUseDefaultDevice () const
 
virtual void OnCriticalError (HRESULT Error) override
 
virtual void OnProcessingPassStart () override
 
virtual void OnProcessingPassEnd () override
 
bool ResetXAudio2System ()
 
bool InitDeviceSwapContextInternal (const FString &InRequestedDeviceID, const TCHAR *InReason, const TOptional< FAudioPlatformDeviceInfo > &InDeviceInfo)
 
- Protected Member Functions inherited from Audio::FAudioMixerPlatformSwappable
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)
 

Static Protected Member Functions

static IXAudio2MasteringVoiceCreateMasteringVoice (IXAudio2 &InXAudio2System, const FAudioPlatformDeviceInfo &NewDevice, bool bUseDefaultDevice)
 

Protected Attributes

HMODULE XAudio2Dll
 
FThreadSafeBool bDeviceChanged
 
IXAudio2XAudio2System
 
IXAudio2MasteringVoiceOutputAudioStreamMasteringVoice
 
IXAudio2SourceVoiceOutputAudioStreamSourceVoice
 
FXAudio2VoiceCallback OutputVoiceCallback
 
float TimeSinceNullDeviceWasLastChecked
 
bool FirstBufferSubmitted {false}
 
TUniquePtr< IAudioPlatformDeviceInfoCacheDeviceInfoCache
 
uint32 bIsInitialized: 1
 
uint32 bIsDeviceOpen: 1
 
- 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 }
 

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)
 
- Static Protected Attributes inherited from Audio::IAudioMixerPlatformInterface
static AUDIOMIXERCORE_API FThreadSafeCounter NextInstanceID
 

Constructor & Destructor Documentation

◆ FMixerPlatformXAudio2()

Audio::FMixerPlatformXAudio2::FMixerPlatformXAudio2 ( )

◆ ~FMixerPlatformXAudio2()

Audio::FMixerPlatformXAudio2::~FMixerPlatformXAudio2 ( )
overridevirtual

Member Function Documentation

◆ CheckAudioDeviceChange()

bool Audio::FMixerPlatformXAudio2::CheckAudioDeviceChange ( )
overridevirtual

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

Reimplemented from Audio::FAudioMixerPlatformSwappable.

◆ CheckThreadedDeviceSwap()

bool Audio::FMixerPlatformXAudio2::CheckThreadedDeviceSwap ( )
overridevirtual

Called repeatedly to update an active, async device swap

Reimplemented from Audio::FAudioMixerPlatformSwappable.

◆ CloseAudioStream()

bool Audio::FMixerPlatformXAudio2::CloseAudioStream ( )
overridevirtual

Closes the audio stream (if it's open).

Implements Audio::IAudioMixerPlatformInterface.

◆ CreateMasteringVoice()

IXAudio2MasteringVoice * Audio::FMixerPlatformXAudio2::CreateMasteringVoice ( IXAudio2 InXAudio2System,
const FAudioPlatformDeviceInfo NewDevice,
bool  bUseDefaultDevice 
)
staticprotected

◆ EnqueueAsyncDeviceSwap()

void Audio::FMixerPlatformXAudio2::EnqueueAsyncDeviceSwap ( )
overridevirtual

Kicks of an async device swap task

Implements Audio::FAudioMixerPlatformSwappable.

◆ GetCreateFlags()

virtual uint32 Audio::FMixerPlatformXAudio2::GetCreateFlags ( ) const
inlineprotectedvirtual

◆ GetCurrentDeviceName()

FString Audio::FMixerPlatformXAudio2::GetCurrentDeviceName ( ) const
overridevirtual

Returns the name of the currently used audio device.

Reimplemented from Audio::IAudioMixerPlatformInterface.

◆ GetDefaultDeviceName()

FString Audio::FMixerPlatformXAudio2::GetDefaultDeviceName ( )
overridevirtual

Return any optional device name defined in platform configuratio.

Implements Audio::IAudioMixerPlatformInterface.

◆ GetDefaultOutputDeviceIndex()

bool Audio::FMixerPlatformXAudio2::GetDefaultOutputDeviceIndex ( uint32 OutDefaultDeviceIndex) const
overridevirtual

Returns the default device index.

Reimplemented from Audio::IAudioMixerPlatformInterface.

◆ GetDeviceId()

FString Audio::FMixerPlatformXAudio2::GetDeviceId ( ) const
overridevirtual

◆ GetDeviceInfoCache()

Audio::IAudioPlatformDeviceInfoCache * Audio::FMixerPlatformXAudio2::GetDeviceInfoCache ( ) const
overridevirtual

◆ GetNumOutputDevices()

bool Audio::FMixerPlatformXAudio2::GetNumOutputDevices ( uint32 OutNumOutputDevices)
overridevirtual

Returns the number of output devices.

Reimplemented from Audio::IAudioMixerPlatformInterface.

◆ GetOutputDeviceInfo()

bool Audio::FMixerPlatformXAudio2::GetOutputDeviceInfo ( const uint32  InDeviceIndex,
FAudioPlatformDeviceInfo OutInfo 
)
overridevirtual

Gets the device information of the given device index.

Implements Audio::IAudioMixerPlatformInterface.

◆ GetPlatformApi()

virtual FString Audio::FMixerPlatformXAudio2::GetPlatformApi ( ) const
inlineoverridevirtual

Returns the platform API name.

Implements Audio::IAudioMixerPlatformInterface.

◆ GetPlatformDeviceInfo()

FAudioPlatformDeviceInfo Audio::FMixerPlatformXAudio2::GetPlatformDeviceInfo ( ) const
overridevirtual

Returns the platform device info of the currently open audio stream.

Implements Audio::IAudioMixerPlatformInterface.

◆ GetPlatformSettings()

FAudioPlatformSettings Audio::FMixerPlatformXAudio2::GetPlatformSettings ( ) const
overridevirtual

Gets the platform specific audio settings.

Implements Audio::IAudioMixerPlatformInterface.

◆ InitDeviceSwapContextInternal()

bool Audio::FMixerPlatformXAudio2::InitDeviceSwapContextInternal ( const FString &  InRequestedDeviceID,
const TCHAR InReason,
const TOptional< FAudioPlatformDeviceInfo > &  InDeviceInfo 
)
protected

Can be used by subclasses to initialize a device swap context by supplying a specific FAudioPlatformDeviceInfo rather than looking it up via the requested device Id.

◆ InitializeDeviceSwapContext()

bool Audio::FMixerPlatformXAudio2::InitializeDeviceSwapContext ( const FString &  InRequestedDeviceID,
const TCHAR InReason 
)
overridevirtual

Initializes a new device swap context with the given parameters

Implements Audio::FAudioMixerPlatformSwappable.

◆ InitializeHardware()

bool Audio::FMixerPlatformXAudio2::InitializeHardware ( )
overridevirtual

Initialize the hardware.

Implements Audio::IAudioMixerPlatformInterface.

◆ IsDeviceInfoValid()

bool Audio::FMixerPlatformXAudio2::IsDeviceInfoValid ( const FAudioPlatformDeviceInfo InDeviceInfo) const
overridevirtual

◆ IsInitialized()

bool Audio::FMixerPlatformXAudio2::IsInitialized ( ) const
overridevirtual

Is the hardware initialized.

Implements Audio::IAudioMixerPlatformInterface.

◆ MoveAudioStreamToNewAudioDevice()

bool Audio::FMixerPlatformXAudio2::MoveAudioStreamToNewAudioDevice ( )
overridevirtual

◆ OnCriticalError()

void Audio::FMixerPlatformXAudio2::OnCriticalError ( HRESULT  Error)
overrideprotectedvirtual

◆ OnDefaultCaptureDeviceChanged()

void Audio::FMixerPlatformXAudio2::OnDefaultCaptureDeviceChanged ( const EAudioDeviceRole  InAudioDeviceRole,
const FString &  DeviceId 
)
overridevirtual

◆ OnDefaultRenderDeviceChanged()

void Audio::FMixerPlatformXAudio2::OnDefaultRenderDeviceChanged ( const EAudioDeviceRole  InAudioDeviceRole,
const FString &  DeviceId 
)
overridevirtual

◆ OnDeviceAdded()

void Audio::FMixerPlatformXAudio2::OnDeviceAdded ( const FString &  DeviceId,
bool  bIsRenderDevice 
)
overridevirtual

◆ OnDeviceRemoved()

void Audio::FMixerPlatformXAudio2::OnDeviceRemoved ( const FString &  DeviceId,
bool  bIsRenderDevice 
)
overridevirtual

◆ OnDeviceStateChanged()

void Audio::FMixerPlatformXAudio2::OnDeviceStateChanged ( const FString &  DeviceId,
const EAudioDeviceState  InState,
bool  bIsRenderDevice 
)
overridevirtual

◆ OnHardwareUpdate()

void Audio::FMixerPlatformXAudio2::OnHardwareUpdate ( )
overridevirtual

◆ OnProcessingPassEnd()

void Audio::FMixerPlatformXAudio2::OnProcessingPassEnd ( )
overrideprotectedvirtual

◆ OnProcessingPassStart()

void Audio::FMixerPlatformXAudio2::OnProcessingPassStart ( )
overrideprotectedvirtual

◆ OnSessionDisconnect()

void Audio::FMixerPlatformXAudio2::OnSessionDisconnect ( Audio::IAudioMixerDeviceChangedListener::EDisconnectReason  InReason)
overridevirtual

◆ OpenAudioStream()

bool Audio::FMixerPlatformXAudio2::OpenAudioStream ( const FAudioMixerOpenStreamParams Params)
overridevirtual

Opens up a new audio stream with the given parameters.

Implements Audio::IAudioMixerPlatformInterface.

◆ PostDeviceSwap()

bool Audio::FMixerPlatformXAudio2::PostDeviceSwap ( )
overridevirtual

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

Reimplemented from Audio::FAudioMixerPlatformSwappable.

◆ PreDeviceSwap()

bool Audio::FMixerPlatformXAudio2::PreDeviceSwap ( )
overridevirtual

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

Reimplemented from Audio::FAudioMixerPlatformSwappable.

◆ RegisterDeviceChangedListener()

void Audio::FMixerPlatformXAudio2::RegisterDeviceChangedListener ( )
overridevirtual

◆ ResetXAudio2System()

bool Audio::FMixerPlatformXAudio2::ResetXAudio2System ( )
protected

◆ ShouldUseDefaultDevice()

virtual bool Audio::FMixerPlatformXAudio2::ShouldUseDefaultDevice ( ) const
inlineprotectedvirtual

◆ ShouldUseDeviceInfoCache()

virtual bool Audio::FMixerPlatformXAudio2::ShouldUseDeviceInfoCache ( ) const
inlineoverridevirtual

◆ StartAudioStream()

bool Audio::FMixerPlatformXAudio2::StartAudioStream ( )
overridevirtual

Starts the audio stream processing and generating audio.

Implements Audio::IAudioMixerPlatformInterface.

◆ StopAudioStream()

bool Audio::FMixerPlatformXAudio2::StopAudioStream ( )
overridevirtual

Stops the audio stream (but keeps the audio stream open).

Implements Audio::IAudioMixerPlatformInterface.

◆ SubmitBuffer()

void Audio::FMixerPlatformXAudio2::SubmitBuffer ( const uint8 Buffer)
overridevirtual

Submit the given buffer to the platform's output audio device.

Reimplemented from Audio::IAudioMixerPlatformInterface.

◆ SynchronousDeviceSwap()

void Audio::FMixerPlatformXAudio2::SynchronousDeviceSwap ( )
overridevirtual

Performs a device swap synchronously in the current thread

Implements Audio::FAudioMixerPlatformSwappable.

◆ TeardownHardware()

bool Audio::FMixerPlatformXAudio2::TeardownHardware ( )
overridevirtual

Teardown the hardware.

Implements Audio::IAudioMixerPlatformInterface.

◆ UnregisterDeviceChangedListener()

void Audio::FMixerPlatformXAudio2::UnregisterDeviceChangedListener ( )
overridevirtual

Member Data Documentation

◆ bDeviceChanged

FThreadSafeBool Audio::FMixerPlatformXAudio2::bDeviceChanged
protected

◆ bIsDeviceOpen

uint32 Audio::FMixerPlatformXAudio2::bIsDeviceOpen
protected

◆ bIsInitialized

uint32 Audio::FMixerPlatformXAudio2::bIsInitialized
protected

◆ DeviceInfoCache

TUniquePtr<IAudioPlatformDeviceInfoCache> Audio::FMixerPlatformXAudio2::DeviceInfoCache
protected

◆ FirstBufferSubmitted

bool Audio::FMixerPlatformXAudio2::FirstBufferSubmitted {false}
protected

◆ OutputAudioStreamMasteringVoice

IXAudio2MasteringVoice* Audio::FMixerPlatformXAudio2::OutputAudioStreamMasteringVoice
protected

◆ OutputAudioStreamSourceVoice

IXAudio2SourceVoice* Audio::FMixerPlatformXAudio2::OutputAudioStreamSourceVoice
protected

◆ OutputVoiceCallback

FXAudio2VoiceCallback Audio::FMixerPlatformXAudio2::OutputVoiceCallback
protected

◆ TimeSinceNullDeviceWasLastChecked

float Audio::FMixerPlatformXAudio2::TimeSinceNullDeviceWasLastChecked
protected

◆ XAudio2Dll

HMODULE Audio::FMixerPlatformXAudio2::XAudio2Dll
protected

◆ XAudio2System

IXAudio2* Audio::FMixerPlatformXAudio2::XAudio2System
protected

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