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

#include <WindowsMMDeviceInfoCache.h>

+ Inheritance diagram for Audio::FWindowsMMDeviceCache:

Classes

struct  FCacheEntry
 

Public Member Functions

UE_API FWindowsMMDeviceCache ()
 
UE_API FWindowsMMDeviceCache (bool bInEnableAggregateDeviceSupport)
 
virtual ~FWindowsMMDeviceCache ()=default
 
UE_API bool EnumerateChannelMask (uint32 InMask, FCacheEntry &OutInfo)
 
UE_API bool EnumerateChannelFormat (const WAVEFORMATEX *InFormat, FCacheEntry &OutInfo)
 
UE_API EDeviceEndpointType QueryDeviceDataFlow (const TComPtr< IMMDevice > &InDevice) const
 
UE_API bool EnumerateDeviceProps (const TComPtr< IMMDevice > &InDevice, FCacheEntry &OutInfo)
 
UE_API bool EnumerateHardwareTopology (const TComPtr< IMMDevice > &InDevice, FCacheEntry &OutInfo)
 
UE_API void EnumerateEndpoints ()
 
UE_API void EnumerateDefaults ()
 
UE_API void OnDefaultCaptureDeviceChanged (const EAudioDeviceRole InAudioDeviceRole, const FString &DeviceId) override
 
UE_API void OnDefaultRenderDeviceChanged (const EAudioDeviceRole InAudioDeviceRole, const FString &DeviceId) override
 
UE_API void OnDeviceAdded (const FString &DeviceId, bool bIsRender) override
 
UE_API void OnDeviceRemoved (const FString &DeviceId, bool) override
 
UE_API TOptional< FCacheEntryBuildCacheEntry (const FString &DeviceId)
 
UE_API FString GetFriendlyName (FName InDeviceId) const
 
UE_API void OnDeviceStateChanged (const FString &DeviceId, const EAudioDeviceState InState, bool) override
 
UE_API void OnFormatChanged (const FString &InDeviceId, const FFormatChangedData &InFormat) override
 
UE_API void MakeDeviceInfo (const FCacheEntry &InEntry, FName InDefaultDevice, FAudioPlatformDeviceInfo &OutInfo) const
 
virtual UE_API TArray< FAudioPlatformDeviceInfoGetAllActiveOutputDevices () const override
 
virtual UE_API bool IsAggregateHardwareDeviceId (const FName InDeviceID) const override
 
virtual UE_API TOptional< FAudioPlatformDeviceInfoGetAggregateHardwareDeviceInfo (const FName InHardwareId, const EDeviceEndpointType InEndpointType) const
 
virtual UE_API TArray< FAudioPlatformDeviceInfoGetLogicalAggregateDevices (const FName InHardwareId, const EDeviceEndpointType InEndpointType) const override
 
virtual UE_API TArray< FAudioPlatformDeviceInfoSynthesizeAggregateDeviceList (const EDeviceEndpointType InType) const
 
UE_API FName GetDefaultOutputDevice_NoLock () const
 
UE_API TOptional< FAudioPlatformDeviceInfoFindDefaultOutputDevice () const override
 
UE_API TOptional< FAudioPlatformDeviceInfoFindActiveOutputDevice (FName InDeviceID) const override
 
UE_API bool IsAggregateDeviceSupportEnabled () const
 
- Public Member Functions inherited from Audio::IAudioMixerDeviceChangedListener
virtual ~IAudioMixerDeviceChangedListener ()=default
 
virtual void RegisterDeviceChangedListener ()
 
virtual void UnregisterDeviceChangedListener ()
 
virtual void OnSessionDisconnect (EDisconnectReason InReason)
 
virtual FString GetDeviceId () const
 
- Public Member Functions inherited from Audio::IAudioPlatformDeviceInfoCache
virtual ~IAudioPlatformDeviceInfoCache ()=default
 

Static Public Member Functions

static UE_API FString ExtractAggregateDeviceName (const FString &InName)
 

Public Attributes

TComPtr< IMMDeviceEnumeratorDeviceEnumerator
 
FRWLock CacheMutationLock
 
TMap< FName, FCacheEntryCache
 
FName DefaultCaptureId [(int32) EAudioDeviceRole::COUNT]
 
FName DefaultRenderId [(int32) EAudioDeviceRole::COUNT]
 

Additional Inherited Members

- Public Types inherited from Audio::IAudioMixerDeviceChangedListener
enum class  EDisconnectReason {
  DeviceRemoval , ServerShutdown , FormatChanged , SessionLogoff ,
  SessionDisconnected , ExclusiveModeOverride
}
 

Constructor & Destructor Documentation

◆ FWindowsMMDeviceCache() [1/2]

Audio::FWindowsMMDeviceCache::FWindowsMMDeviceCache ( )

◆ FWindowsMMDeviceCache() [2/2]

Audio::FWindowsMMDeviceCache::FWindowsMMDeviceCache ( bool  bInEnableAggregateDeviceSupport)
explicit

◆ ~FWindowsMMDeviceCache()

virtual Audio::FWindowsMMDeviceCache::~FWindowsMMDeviceCache ( )
virtualdefault

Member Function Documentation

◆ BuildCacheEntry()

TOptional< FWindowsMMDeviceCache::FCacheEntry > Audio::FWindowsMMDeviceCache::BuildCacheEntry ( const FString &  DeviceId)

◆ EnumerateChannelFormat()

bool Audio::FWindowsMMDeviceCache::EnumerateChannelFormat ( const WAVEFORMATEX InFormat,
FCacheEntry OutInfo 
)

◆ EnumerateChannelMask()

bool Audio::FWindowsMMDeviceCache::EnumerateChannelMask ( uint32  InMask,
FCacheEntry OutInfo 
)

◆ EnumerateDefaults()

void Audio::FWindowsMMDeviceCache::EnumerateDefaults ( )

◆ EnumerateDeviceProps()

bool Audio::FWindowsMMDeviceCache::EnumerateDeviceProps ( const TComPtr< IMMDevice > &  InDevice,
FCacheEntry OutInfo 
)

◆ EnumerateEndpoints()

void Audio::FWindowsMMDeviceCache::EnumerateEndpoints ( )

◆ EnumerateHardwareTopology()

bool Audio::FWindowsMMDeviceCache::EnumerateHardwareTopology ( const TComPtr< IMMDevice > &  InDevice,
FCacheEntry OutInfo 
)

◆ ExtractAggregateDeviceName()

FString Audio::FWindowsMMDeviceCache::ExtractAggregateDeviceName ( const FString &  InName)
static

◆ FindActiveOutputDevice()

TOptional< FAudioPlatformDeviceInfo > Audio::FWindowsMMDeviceCache::FindActiveOutputDevice ( FName  InDeviceID) const
overridevirtual

Returns the device info for an aggregate audio device. Note that this is a virtual device in that it is not a device returned by the OS device enumerator. It is a device synthesized for the purpose of identifying an aggregate device as a single, unified device. This device cannot be instantiated as-is. It's device Id can be used with GetAggregateHardwareDeviceInfo() to get an array of the logical devices that make up the aggregate and can be instantiated as a group to form an aggregate device at runtime.

Implements Audio::IAudioPlatformDeviceInfoCache.

◆ FindDefaultOutputDevice()

TOptional< FAudioPlatformDeviceInfo > Audio::FWindowsMMDeviceCache::FindDefaultOutputDevice ( ) const
overridevirtual

◆ GetAggregateHardwareDeviceInfo()

TOptional< FAudioPlatformDeviceInfo > Audio::FWindowsMMDeviceCache::GetAggregateHardwareDeviceInfo ( const FName  InHardwareId,
const EDeviceEndpointType  InEndpointType 
) const
virtual

◆ GetAllActiveOutputDevices()

TArray< FAudioPlatformDeviceInfo > Audio::FWindowsMMDeviceCache::GetAllActiveOutputDevices ( ) const
overridevirtual

◆ GetDefaultOutputDevice_NoLock()

FName Audio::FWindowsMMDeviceCache::GetDefaultOutputDevice_NoLock ( ) const

◆ GetFriendlyName()

FString Audio::FWindowsMMDeviceCache::GetFriendlyName ( FName  InDeviceId) const

◆ GetLogicalAggregateDevices()

TArray< FAudioPlatformDeviceInfo > Audio::FWindowsMMDeviceCache::GetLogicalAggregateDevices ( const FName  InHardwareId,
const EDeviceEndpointType  InEndpointType 
) const
overridevirtual

Returns an array of logical audio devices which, when combined, form an aggregate device.

Implements Audio::IAudioPlatformDeviceInfoCache.

◆ IsAggregateDeviceSupportEnabled()

bool Audio::FWindowsMMDeviceCache::IsAggregateDeviceSupportEnabled ( ) const

◆ IsAggregateHardwareDeviceId()

bool Audio::FWindowsMMDeviceCache::IsAggregateHardwareDeviceId ( const FName  InDeviceId) const
overridevirtual

Determines if the given device Id is that of an aggregate device which uses hardware Ids as device Ids.

Implements Audio::IAudioPlatformDeviceInfoCache.

◆ MakeDeviceInfo()

void Audio::FWindowsMMDeviceCache::MakeDeviceInfo ( const FCacheEntry InEntry,
FName  InDefaultDevice,
FAudioPlatformDeviceInfo OutInfo 
) const

◆ OnDefaultCaptureDeviceChanged()

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

◆ OnDefaultRenderDeviceChanged()

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

◆ OnDeviceAdded()

void Audio::FWindowsMMDeviceCache::OnDeviceAdded ( const FString &  DeviceId,
bool  bIsRender 
)
overridevirtual

◆ OnDeviceRemoved()

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

◆ OnDeviceStateChanged()

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

◆ OnFormatChanged()

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

◆ QueryDeviceDataFlow()

EDeviceEndpointType Audio::FWindowsMMDeviceCache::QueryDeviceDataFlow ( const TComPtr< IMMDevice > &  InDevice) const

◆ SynthesizeAggregateDeviceList()

TArray< FAudioPlatformDeviceInfo > Audio::FWindowsMMDeviceCache::SynthesizeAggregateDeviceList ( const EDeviceEndpointType  InType) const
virtual

Member Data Documentation

◆ Cache

TMap<FName, FCacheEntry> Audio::FWindowsMMDeviceCache::Cache

◆ CacheMutationLock

FRWLock Audio::FWindowsMMDeviceCache::CacheMutationLock
mutable

◆ DefaultCaptureId

FName Audio::FWindowsMMDeviceCache::DefaultCaptureId[(int32) EAudioDeviceRole::COUNT]

◆ DefaultRenderId

FName Audio::FWindowsMMDeviceCache::DefaultRenderId[(int32) EAudioDeviceRole::COUNT]

◆ DeviceEnumerator

TComPtr<IMMDeviceEnumerator> Audio::FWindowsMMDeviceCache::DeviceEnumerator

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