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

#include <AudioMixerWasapi.h>

+ Inheritance diagram for Audio::FAudioMixerWasapi:

Public Member Functions

 FAudioMixerWasapi ()
 
virtual ~FAudioMixerWasapi () override
 
virtual FString GetPlatformApi () const override
 
virtual bool InitializeHardware () override
 
virtual bool TeardownHardware () override
 
virtual bool IsInitialized () const override
 
virtual int32 GetNumFrames (const int32 InNumRequestedFrames) override
 
virtual bool GetNumOutputDevices (uint32 &OutNumOutputDevices) override
 
virtual bool GetOutputDeviceInfo (const uint32 InDeviceIndex, FAudioPlatformDeviceInfo &OutInfo) 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 FAudioPlatformDeviceInfo GetPlatformDeviceInfo () const override
 
virtual void SubmitBuffer (const uint8 *Buffer) override
 
virtual void SubmitDirectOutBuffer (const int32 InDirectOutIndex, const FAlignedFloatBuffer &InBuffer) override
 
virtual FString GetDefaultDeviceName () override
 
virtual FAudioPlatformSettings GetPlatformSettings () const 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 OnFormatChanged (const FString &InDeviceId, const FFormatChangedData &InFormat) 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 bool CheckAudioDeviceChange () override
 
virtual UE_API bool MoveAudioStreamToNewAudioDevice () 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 FString GetCurrentDeviceName () const
 
virtual AUDIOMIXERCORE_API int32 GetIndexForDevice (const FString &InDeviceName)
 
virtual bool MoveAudioStreamToNewAudioDevice (const FString &InNewDeviceId)
 
virtual bool DisablePCMAudioCaching () const
 
virtual bool SupportsHardwareDecompression () const
 
virtual bool IsNonRealtime () const
 
virtual void SuspendContext ()
 
virtual void ResumeContext ()
 
virtual void OnHardwareUpdate ()
 
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
 

Protected Member Functions

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)
 

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

FAudioMixerWasapi - Wasapi audio backend for Windows and Xbox

Constructor & Destructor Documentation

◆ FAudioMixerWasapi()

Audio::FAudioMixerWasapi::FAudioMixerWasapi ( )

◆ ~FAudioMixerWasapi()

Audio::FAudioMixerWasapi::~FAudioMixerWasapi ( )
overridevirtual

Member Function Documentation

◆ CheckThreadedDeviceSwap()

bool Audio::FAudioMixerWasapi::CheckThreadedDeviceSwap ( )
overridevirtual

Called repeatedly to update an active, async device swap

Reimplemented from Audio::FAudioMixerPlatformSwappable.

◆ CloseAudioStream()

bool Audio::FAudioMixerWasapi::CloseAudioStream ( )
overridevirtual

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

Implements Audio::IAudioMixerPlatformInterface.

◆ EnqueueAsyncDeviceSwap()

void Audio::FAudioMixerWasapi::EnqueueAsyncDeviceSwap ( )
overridevirtual

Kicks of an async device swap task

Implements Audio::FAudioMixerPlatformSwappable.

◆ GetDefaultDeviceName()

FString Audio::FAudioMixerWasapi::GetDefaultDeviceName ( )
overridevirtual

Return any optional device name defined in platform configuratio.

Implements Audio::IAudioMixerPlatformInterface.

◆ GetDefaultOutputDeviceIndex()

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

Returns the default device index.

Reimplemented from Audio::IAudioMixerPlatformInterface.

◆ GetDeviceId()

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

◆ GetDeviceInfoCache()

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

◆ GetNumFrames()

int32 Audio::FAudioMixerWasapi::GetNumFrames ( const int32  InNumReqestedFrames)
overridevirtual

Allows platforms to filter the requested number of frames to render. Some platforms only support specific frame counts.

Reimplemented from Audio::IAudioMixerPlatformInterface.

◆ GetNumOutputDevices()

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

Returns the number of output devices.

Reimplemented from Audio::IAudioMixerPlatformInterface.

◆ GetOutputDeviceInfo()

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

Gets the device information of the given device index.

Implements Audio::IAudioMixerPlatformInterface.

◆ GetPlatformApi()

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

Returns the platform API name.

Implements Audio::IAudioMixerPlatformInterface.

◆ GetPlatformDeviceInfo()

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

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

Implements Audio::IAudioMixerPlatformInterface.

◆ GetPlatformSettings()

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

Gets the platform specific audio settings.

Implements Audio::IAudioMixerPlatformInterface.

◆ InitDeviceSwapContextInternal()

bool Audio::FAudioMixerWasapi::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::FAudioMixerWasapi::InitializeDeviceSwapContext ( const FString &  InRequestedDeviceID,
const TCHAR InReason 
)
overridevirtual

Initializes a new device swap context with the given parameters

Implements Audio::FAudioMixerPlatformSwappable.

◆ InitializeHardware()

bool Audio::FAudioMixerWasapi::InitializeHardware ( )
overridevirtual

Initialize the hardware.

Implements Audio::IAudioMixerPlatformInterface.

◆ IsDeviceInfoValid()

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

◆ IsInitialized()

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

Is the hardware initialized.

Implements Audio::IAudioMixerPlatformInterface.

◆ OnDefaultCaptureDeviceChanged()

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

◆ OnDefaultRenderDeviceChanged()

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

◆ OnDeviceAdded()

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

◆ OnDeviceRemoved()

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

◆ OnDeviceStateChanged()

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

◆ OnFormatChanged()

void Audio::FAudioMixerWasapi::OnFormatChanged ( const FString &  InDeviceId,
const FFormatChangedData InFormat 
)
overridevirtual

◆ OnSessionDisconnect()

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

◆ OpenAudioStream()

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

Opens up a new audio stream with the given parameters.

Implements Audio::IAudioMixerPlatformInterface.

◆ PostDeviceSwap()

bool Audio::FAudioMixerWasapi::PostDeviceSwap ( )
overridevirtual

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

Reimplemented from Audio::FAudioMixerPlatformSwappable.

◆ PreDeviceSwap()

bool Audio::FAudioMixerWasapi::PreDeviceSwap ( )
overridevirtual

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

Reimplemented from Audio::FAudioMixerPlatformSwappable.

◆ RegisterDeviceChangedListener()

void Audio::FAudioMixerWasapi::RegisterDeviceChangedListener ( )
overridevirtual

◆ ShouldUseDeviceInfoCache()

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

◆ StartAudioStream()

bool Audio::FAudioMixerWasapi::StartAudioStream ( )
overridevirtual

Starts the audio stream processing and generating audio.

Implements Audio::IAudioMixerPlatformInterface.

◆ StopAudioStream()

bool Audio::FAudioMixerWasapi::StopAudioStream ( )
overridevirtual

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

Implements Audio::IAudioMixerPlatformInterface.

◆ SubmitBuffer()

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

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

Reimplemented from Audio::IAudioMixerPlatformInterface.

◆ SubmitDirectOutBuffer()

void Audio::FAudioMixerWasapi::SubmitDirectOutBuffer ( const int32  InDirectOutIndex,
const FAlignedFloatBuffer InBuffer 
)
overridevirtual

Submit a buffer that is to be output directly through a discreet device channel.

Reimplemented from Audio::IAudioMixerPlatformInterface.

◆ SynchronousDeviceSwap()

void Audio::FAudioMixerWasapi::SynchronousDeviceSwap ( )
overridevirtual

Performs a device swap synchronously in the current thread

Implements Audio::FAudioMixerPlatformSwappable.

◆ TeardownHardware()

bool Audio::FAudioMixerWasapi::TeardownHardware ( )
overridevirtual

Teardown the hardware.

Implements Audio::IAudioMixerPlatformInterface.

◆ UnregisterDeviceChangedListener()

void Audio::FAudioMixerWasapi::UnregisterDeviceChangedListener ( )
overridevirtual

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