@class NSMutableDictionary, VCAudioRelayIO, AVAudioDevice, VCAudioSession, NSDictionary, VCAudioSessionMediaProperties, NSObject, VCAudioUnitSpatialContext, NSMutableArray, VCAudioUnitProperties, NSString, VCAudioRelay, NSArray, ATSpatialStreamDescriptions; @protocol OS_dispatch_queue; @interface VCAudioManager : VCObject <VCAudioIOControllerControl, VCAudioSessionDelegate> { struct tagHANDLE { int x0; } *_hAUIO; NSObject<OS_dispatch_queue> *_dispatchQueue; unsigned int _state; NSMutableArray *_allClients; NSMutableArray *_startingIOClients; BOOL _isInputMeteringEnabled; BOOL _isOutputMeteringEnabled; BOOL _isSuspended; BOOL _followSystemInput; BOOL _followSystemOutput; struct _VCAudioIOControllerIOState { BOOL timestampInitialized; double lastHostTime; unsigned int lastInputTimestamp; unsigned int lastInputSampleCount; double lastBlockSize; unsigned long long lastTimestamp; struct _VCSingleLinkedList { struct _VCSingleLinkedListEntry *head; BOOL initialized; void /* function */ *compare; unsigned long long countEntries; } clientIOList; struct opaqueCMSimpleQueue *eventQueue; struct opaqueVCAudioLimiter *audioLimiter; struct opaqueVCAudioBufferList *secondarySampleBuffer; struct opaqueVCAudioBufferList *interruptMixDownSampleBuffer; unsigned int audioSessionId; unsigned long long channelStateBitmap; unsigned long long prevUsedChannelStateBitmap; char logPrefix[40]; BOOL isMuted; BOOL isVoiceActivityEnabled; BOOL isMediaPriorityEnabled; double forcedMediaPriorityLastUpdateTime; BOOL isForcedMediaPriorityEnabled; unsigned char forcedMediaPriority; struct opaqueVCVoiceDetector *voiceDetector; } _sinkData; struct _VCAudioIOControllerIOState { BOOL timestampInitialized; double lastHostTime; unsigned int lastInputTimestamp; unsigned int lastInputSampleCount; double lastBlockSize; unsigned long long lastTimestamp; struct _VCSingleLinkedList { struct _VCSingleLinkedListEntry *head; BOOL initialized; void /* function */ *compare; unsigned long long countEntries; } clientIOList; struct opaqueCMSimpleQueue *eventQueue; struct opaqueVCAudioLimiter *audioLimiter; struct opaqueVCAudioBufferList *secondarySampleBuffer; struct opaqueVCAudioBufferList *interruptMixDownSampleBuffer; unsigned int audioSessionId; unsigned long long channelStateBitmap; unsigned long long prevUsedChannelStateBitmap; char logPrefix[40]; BOOL isMuted; BOOL isVoiceActivityEnabled; BOOL isMediaPriorityEnabled; double forcedMediaPriorityLastUpdateTime; BOOL isForcedMediaPriorityEnabled; unsigned char forcedMediaPriority; struct opaqueVCVoiceDetector *voiceDetector; } _sourceData; int _interruptThreadState; VCAudioRelay *_interruptThread; VCAudioRelayIO *_interruptThreadClient; BOOL _isInterrupting; struct _opaque_pthread_mutex_t { long long __sig; char __opaque[56]; } _interruptingMutex; struct _opaque_pthread_mutex_t { long long __sig; char __opaque[56]; } _inputDeviceMutex; struct _opaque_pthread_mutex_t { long long __sig; char __opaque[56]; } _outputDeviceMutex; BOOL _spatialAudioDisabled; VCAudioSession *_audioSession; int _playbackMode; NSMutableDictionary *_spatialContexts; NSMutableDictionary *_audioSessionSinkMuted; VCAudioUnitSpatialContext *_currentSpatialContext; id /* block */ _mutedTalkerNotificationHandler; NSArray *_stateStrings; ATSpatialStreamDescriptions *_spatialStreamDescriptions; BOOL _isMediaPlaybackOnExternalDevice; } @property (retain, nonatomic) VCAudioSessionMediaProperties *currentAudioSessionMediaProperties; @property (retain, nonatomic) VCAudioUnitProperties *currentAudioUnitProperties; @property (retain, nonatomic) NSDictionary *vpOperatingModeToAudioSessionMediaFormatMapping; @property (retain) AVAudioDevice *currentInputDevice; @property (retain) AVAudioDevice *currentOutputDevice; @property (nonatomic, getter=isMicrophoneMuted) BOOL microphoneMuted; @property (nonatomic, getter=isMixingVoiceWithMediaEnabled) BOOL mixingVoiceWithMediaEnabled; @property (nonatomic) BOOL isInDaemon; @property (nonatomic) BOOL isGKVoiceChat; @property (nonatomic, getter=isSpeakerPhoneEnabled) BOOL speakerPhoneEnabled; @property (readonly, nonatomic) struct _VCAudioIOControllerIOState { BOOL x0; double x1; unsigned int x2; unsigned int x3; double x4; unsigned long long x5; struct _VCSingleLinkedList { struct _VCSingleLinkedListEntry *x0; BOOL x1; void /* function */ *x2; unsigned long long x3; } x6; struct opaqueCMSimpleQueue *x7; struct opaqueVCAudioLimiter *x8; struct opaqueVCAudioBufferList *x9; struct opaqueVCAudioBufferList *x10; unsigned int x11; unsigned long long x12; unsigned long long x13; char x14[40]; BOOL x15; BOOL x16; BOOL x17; double x18; BOOL x19; unsigned char x20; struct opaqueVCVoiceDetector *x21; } *sinkIO; @property (readonly, nonatomic) struct _VCAudioIOControllerIOState { BOOL x0; double x1; unsigned int x2; unsigned int x3; double x4; unsigned long long x5; struct _VCSingleLinkedList { struct _VCSingleLinkedListEntry *x0; BOOL x1; void /* function */ *x2; unsigned long long x3; } x6; struct opaqueCMSimpleQueue *x7; struct opaqueVCAudioLimiter *x8; struct opaqueVCAudioBufferList *x9; struct opaqueVCAudioBufferList *x10; unsigned int x11; unsigned long long x12; unsigned long long x13; char x14[40]; BOOL x15; BOOL x16; BOOL x17; double x18; BOOL x19; unsigned char x20; struct opaqueVCVoiceDetector *x21; } *sourceIO; @property (readonly, nonatomic) BOOL supportsVoiceActivityDetection; @property (readonly, nonatomic) NSDictionary *reportingStats; @property (readonly) unsigned long long hash; @property (readonly) Class superclass; @property (readonly, copy) NSString *description; @property (readonly, copy) NSString *debugDescription; + (id)sharedSystemAudioOutputInstance; + (unsigned char)audioIOType:(id)a0 shouldEnableAudioInput:(BOOL)a1; + (id)audioSessionForMode:(int)a0; + (struct AudioStreamBasicDescription { double x0; unsigned int x1; unsigned int x2; unsigned int x3; unsigned int x4; unsigned int x5; unsigned int x6; unsigned int x7; unsigned int x8; })sessionFormatForSampleRate:(double)a0; + (id)sharedSystemAudioInputInstance; + (id)sharedVoiceChatInstance; + (void)terminateProcess:(id)a0 terminateSource:(id)a1 agent:(struct opaqueRTCReporting { } *)a2; - (BOOL)addClient:(id)a0; - (id)retain; - (void)dealloc; - (BOOL)removeClient:(id)a0; - (unsigned long long)retainCount; - (id)autorelease; - (void)setMediaPlaybackOnExternalDevice:(BOOL)a0; - (void)didSessionEnd; - (oneway void)release; - (id)copyWithZone:(struct _NSZone { } *)a0; - (void)applyControllerFormatToClients:(id)a0; - (void)didSessionPause; - (void)setCurrentOutputDeviceInternal:(id)a0; - (void)_cleanupDeadClients; - (void)activateSpatialContext:(id)a0 shouldApplySpatialMetadata:(BOOL)a1; - (void)activateStartingClient:(id)a0 applyControllerFormat:(BOOL)a1; - (void)applyAudioSessionMute; - (void)applySessionContextToAudioUnitProperties:(id)a0 preferredClient:(id)a1; - (void)applySpatialMetadata:(struct OpaqueCMBlockBuffer { } *)a0; - (BOOL)audioCallbacksRunning; - (void)cleanupInterruptThread; - (void)completeStartForAllStartingClients; - (BOOL)computeAllowAudioRecordingWithPreferredClient:(id)a0; - (void)computeFormatDescription:(struct AudioStreamBasicDescription { double x0; unsigned int x1; unsigned int x2; unsigned int x3; unsigned int x4; unsigned int x5; unsigned int x6; unsigned int x7; unsigned int x8; } *)a0 withPreferredClient:(id)a1; - (void)computeHardwarePreferences; - (unsigned int)computeSamplePerFrameWithPreferredClient:(id)a0 sampleRate:(unsigned int)a1; - (void)didSessionResume; - (void)didSessionStop; - (void)didUpdateBasebandCodec:(const struct _VCRemoteCodecInfo { unsigned int x0; double x1; } *)a0; - (void)enterStateStarted; - (void)flushEventQueue:(struct opaqueCMSimpleQueue { } *)a0; - (BOOL)getAudioSessionMediaProperties:(id)a0 forVPOperatingMode:(unsigned int)a1; - (void)getPreferredFormat:(struct AudioStreamBasicDescription { double x0; unsigned int x1; unsigned int x2; unsigned int x3; unsigned int x4; unsigned int x5; unsigned int x6; unsigned int x7; unsigned int x8; } *)a0 blockSize:(double *)a1 vpOperatingMode:(unsigned int *)a2 forOperatingMode:(int)a3 deviceRole:(int)a4 suggestedFormat:(struct AudioStreamBasicDescription { double x0; unsigned int x1; unsigned int x2; unsigned int x3; unsigned int x4; unsigned int x5; unsigned int x6; unsigned int x7; unsigned int x8; } *)a5; - (id)initWithAudioSessionMode:(int)a0; - (id)newAudioSessionMediaPropertiesForSystemAudioWithPreferredClient:(id)a0 audioUnitProperties:(id)a1 isInput:(BOOL)a2; - (id)newAudioSessionMediaPropertiesWithPreferredClient:(id)a0 audioUnitProperties:(id)a1; - (id)newAudioUnitPropertiesForSystemAudioWithPreferredClient:(id)a0 isInput:(BOOL)a1; - (id)newAudioUnitPropertiesWithPreferredClient:(id)a0; - (id)preferredClientWithNewClient:(id)a0; - (int)prewarmingClientOperatingMode; - (void)refreshInputMetering; - (void)refreshOutputMetering; - (void)refreshRemoteCodecType:(unsigned int)a0 sampleRate:(double)a1; - (int)registerAudioSessionId:(unsigned int)a0 maxChannelCountMic:(unsigned int)a1 maxChannelCountSpeaker:(unsigned int)a2 spatialMetadata:(struct OpaqueCMBlockBuffer { } *)a3; - (void)registerClientIO:(struct _VCAudioIOControllerClientIO { void *x0; void /* function */ *x1; id x2; unsigned int x3; unsigned int x4; unsigned int x5; struct opaqueVCAudioBufferList *x6; BOOL x7; BOOL x8; } *)a0 controllerIO:(struct _VCAudioIOControllerIOState { BOOL x0; double x1; unsigned int x2; unsigned int x3; double x4; unsigned long long x5; struct _VCSingleLinkedList { struct _VCSingleLinkedListEntry *x0; BOOL x1; void /* function */ *x2; unsigned long long x3; } x6; struct opaqueCMSimpleQueue *x7; struct opaqueVCAudioLimiter *x8; struct opaqueVCAudioBufferList *x9; struct opaqueVCAudioBufferList *x10; unsigned int x11; unsigned long long x12; unsigned long long x13; char x14[40]; BOOL x15; BOOL x16; BOOL x17; double x18; BOOL x19; unsigned char x20; struct opaqueVCVoiceDetector *x21; } *)a1; - (int)registerForMutedTalkerNotification:(id /* block */)a0; - (int)registerForMutedTalkerNotificationWithAUIO:(struct tagHANDLE { int x0; } *)a0; - (void)removeAllClientsForIO:(struct _VCAudioIOControllerIOState { BOOL x0; double x1; unsigned int x2; unsigned int x3; double x4; unsigned long long x5; struct _VCSingleLinkedList { struct _VCSingleLinkedListEntry *x0; BOOL x1; void /* function */ *x2; unsigned long long x3; } x6; struct opaqueCMSimpleQueue *x7; struct opaqueVCAudioLimiter *x8; struct opaqueVCAudioBufferList *x9; struct opaqueVCAudioBufferList *x10; unsigned int x11; unsigned long long x12; unsigned long long x13; char x14[40]; BOOL x15; BOOL x16; BOOL x17; double x18; BOOL x19; unsigned char x20; struct opaqueVCVoiceDetector *x21; } *)a0; - (BOOL)resetAUIOWithProperties:(id)a0; - (BOOL)resetAudioLimiterWithProperties:(id)a0; - (BOOL)resetAudioSessionWithProperties:(id)a0 interruptSuccessful:(BOOL *)a1; - (void)resetAudioTimestamps; - (void)resetChannelMask; - (void)serverDidDie; - (void)setCurrentInputDeviceInternal:(id)a0; - (void)setInputMetering; - (void)setMute:(BOOL)a0 forClient:(id)a1; - (void)setOutputMetering; - (void)setSpatialMetadata:(struct OpaqueCMBlockBuffer { } *)a0 audioSessionId:(unsigned int)a1 completionHandler:(id /* block */)a2; - (int)setVolume:(float)a0 withRampTime:(float)a1; - (void)setupDynamicDuckingVolumeHandlerForAUIO:(struct tagHANDLE { int x0; } *)a0; - (void)setupIODevicesForAUIO:(struct tagHANDLE { int x0; } *)a0; - (BOOL)setupInterruptThread; - (BOOL)setupVAD; - (BOOL)shouldResetAudioSessionWithProperties:(id)a0; - (BOOL)shouldResetAudioUnitWithProperties:(id)a0; - (BOOL)startAUIOWithProperties:(id)a0; - (BOOL)startAudioSessionWithProperties:(id)a0; - (void)startClient:(id)a0; - (void)startInterruptThread; - (void)startVADWithAudioUnitProperties:(id)a0; - (BOOL)stateIdleWithAudioUnitProperties:(id)a0 sessionProperties:(id)a1 client:(id)a2 newState:(unsigned int *)a3; - (BOOL)stateInterruptedShouldGoToRunning:(id)a0; - (BOOL)stateInterruptedShouldGoToStarted:(id)a0; - (BOOL)stateInterruptedWithAudioUnitProperties:(id)a0 sessionProperties:(id)a1 client:(id)a2 newState:(unsigned int *)a3; - (BOOL)stateRunningShouldTransitionToInterrupted:(id)a0; - (BOOL)stateRunningShouldTransitionToStarted:(id)a0; - (void)stateRunningToSessionStarted; - (BOOL)stateRunningWithAudioUnitProperties:(id)a0 sessionProperties:(id)a1 client:(id)a2 newState:(unsigned int *)a3; - (BOOL)stateSessionStartedWithAudioUnitProperties:(id)a0 sessionProperties:(id)a1 client:(id)a2 newState:(unsigned int *)a3; - (void)stateTransitionInterruptedToRunning; - (void)stateTransitionInterruptedToStarted; - (void)stateTransitionRunningToInterrupted; - (void)stopAUIO; - (void)stopAudioSession; - (void)stopClient:(id)a0; - (void)stopInterruptThread; - (void)unregisterAudioSessionId:(unsigned int)a0; - (void)unregisterClientIO:(struct _VCAudioIOControllerClientIO { void *x0; void /* function */ *x1; id x2; unsigned int x3; unsigned int x4; unsigned int x5; struct opaqueVCAudioBufferList *x6; BOOL x7; BOOL x8; } *)a0 controllerIO:(struct _VCAudioIOControllerIOState { BOOL x0; double x1; unsigned int x2; unsigned int x3; double x4; unsigned long long x5; struct _VCSingleLinkedList { struct _VCSingleLinkedListEntry *x0; BOOL x1; void /* function */ *x2; unsigned long long x3; } x6; struct opaqueCMSimpleQueue *x7; struct opaqueVCAudioLimiter *x8; struct opaqueVCAudioBufferList *x9; struct opaqueVCAudioBufferList *x10; unsigned int x11; unsigned long long x12; unsigned long long x13; char x14[40]; BOOL x15; BOOL x16; BOOL x17; double x18; BOOL x19; unsigned char x20; struct opaqueVCVoiceDetector *x21; } *)a1; - (int)unregisterForMutedTalkerNotificationWithAUIO:(struct tagHANDLE { int x0; } *)a0; - (int)unregisterFromMutedTalkerNotification; - (void)updateClient:(id)a0 settings:(const struct tagVCAudioIOControllerClientSettings { unsigned char x0; BOOL x1; BOOL x2; BOOL x3; } *)a1; - (void)updateCurrentInputDevice:(id)a0; - (void)updateCurrentOutputDevice:(id)a0; - (void)updateDirectionWithClient:(id)a0 settings:(const struct tagVCAudioIOControllerClientSettings { unsigned char x0; BOOL x1; BOOL x2; BOOL x3; } *)a1 isClientRegistered:(BOOL)a2; - (void)updateSpatialAudioWithClient:(id)a0 settings:(const struct tagVCAudioIOControllerClientSettings { unsigned char x0; BOOL x1; BOOL x2; BOOL x3; } *)a1 isClientRegistered:(BOOL)a2; - (BOOL)updateStateWithAudioIOClient:(id)a0; - (void)updateVoiceProcessingWithClient:(id)a0 settings:(const struct tagVCAudioIOControllerClientSettings { unsigned char x0; BOOL x1; BOOL x2; BOOL x3; } *)a1 isClientRegistered:(BOOL)a2; - (unsigned int)vpOperationModeForConferenceOperatingMode:(int)a0 deviceRole:(int)a1; - (void)waitIdleForClient:(id)a0; @end