@class NSMutableDictionary, VCMediaRecorder, VCAudioIO, NSObject, VideoConferenceManager, NSDictionary, VCAudioPowerLevelMonitor, NSMutableArray, GKNATObserver, VCImageQueue, NSString, VCCallSession, VCVideoRule, CameraConferenceSynchronizer, VCAudioPowerSpectrumSource, NSArray; @protocol VideoConferenceChannelQualityDelegate, VideoConferenceSpeakingDelegate, VideoConferenceDelegate, OS_dispatch_queue; @interface VideoConference : VCObject <VCCallSessionDelegate, VCVideoSink, VCVideoCaptureClient, GKNATObserverDelegate, VCAudioIOSource, VCAudioIOSink, VCAudioIODelegate, VCAudioPowerLevelMonitorDelegate, VCMediaRecorderTransportDelegate> { int _clientPid; id delegate; id _captionsDelegate; VCAudioIO *_audioIO; struct opaqueVCAudioBufferList { } *_sourceBuffer; struct opaqueVCAudioBufferList { } *_sinkBuffer; struct opaqueVCAudioBufferList { } *_sinkBufferMix; VideoConferenceManager *manager; struct _opaque_pthread_rwlock_t { long long __sig; char __opaque[192]; } stateLock; NSArray *_sessionArray; NSMutableArray *_startedSessions; BOOL outputMeteringEnabled; BOOL inputMeteringEnabled; BOOL inputFrequencyMeteringEnabled; BOOL outputFrequencyMeteringEnabled; struct opaqueVCFFTMeter { } *_inputFFTMeter; struct opaqueVCFFTMeter { } *_outputFFTMeter; float outputMeterLevel; float inputMeterLevel; VCAudioPowerSpectrumSource *_inputAudioPowerSpectrumSource; VCAudioPowerSpectrumSource *_outputAudioPowerSpectrumSource; BOOL microphoneMuted; VCImageQueue *frontQueue; VCImageQueue *backQueue; VCImageQueue *screenQueue; VCImageQueue *currentQueue; char *currentFacing; int remoteFrameWidth; int remoteFrameHeight; CameraConferenceSynchronizer *synchronizer; double dAudioHostTime; struct _opaque_pthread_mutex_t { long long __sig; char __opaque[56]; } xRemoteLayer; struct _opaque_pthread_mutex_t { long long __sig; char __opaque[56]; } xAudioTS; unsigned int dwAudioTS; BOOL forceNoICE; VCCallSession *currentFocusSession; BOOL hasMic; float conferenceVolume; NSArray *mutedPeers; NSArray *connectedPeers; unsigned char speakingArray[16]; NSObject<VideoConferenceChannelQualityDelegate> *qualityDelegate; float longTerm; float shortTerm; BOOL isTalking; unsigned int talkTime; struct { long long value; int timescale; unsigned int flags; long long epoch; } recvRTPTimeStamp; BOOL useRateControl; unsigned char requestedCameraType; NSDictionary *natTypeDictionary; struct _opaque_pthread_mutex_t { long long __sig; char __opaque[56]; } natMutex; unsigned int lastSentAudioSampleTime; VCAudioPowerLevelMonitor *_remoteAudioPowerLevelMonitor; GKNATObserver *natObserver; unsigned int mostRecentStartedCall; BOOL _isWarmedUp; BOOL bweOperatingModeInitialized; BOOL useNewBWEMode; BOOL useActiveProbingSenderLog; BOOL useFakeLargeFrameMode; BOOL shouldResumeAudio; BOOL shouldResumeVideo; int currentCamera; unsigned int timeStampUpdateCounter; NSObject<OS_dispatch_queue> *delegateNotificationQueue; int conferenceOperatingMode; void *_spatialMetadataEntry; unsigned int _audioChannelIndex; void *_spatialMetadata; } @property (readonly) unsigned long long hash; @property (readonly) Class superclass; @property (readonly, copy) NSString *description; @property (readonly, copy) NSString *debugDescription; @property (readonly, nonatomic) VCMediaRecorder *vcMediaRecorder; @property (retain, nonatomic) NSMutableDictionary *sessionDict; @property (nonatomic) BOOL useCompressedConnectionData; @property (getter=isSpeakerPhoneEnabled) BOOL enableSpeakerPhone; @property (nonatomic) BOOL requiresWifi; @property (nonatomic) unsigned int transportType; @property (nonatomic) BOOL shouldPrioritizeParticipantIDForSIPInvite; @property (nonatomic) NSObject<VideoConferenceDelegate> *delegate; @property (nonatomic) BOOL useViceroyBlobFormat; @property (nonatomic, getter=isMicrophoneMuted) BOOL microphoneMuted; @property (nonatomic, getter=isOutputMeteringEnabled) BOOL outputMeteringEnabled; @property (nonatomic, getter=isInputMeteringEnabled) BOOL inputMeteringEnabled; @property (nonatomic, getter=isInputFrequencyMeteringEnabled) BOOL inputFrequencyMeteringEnabled; @property (nonatomic, getter=isOutputFrequencyMeteringEnabled) BOOL outputFrequencyMeteringEnabled; @property (readonly, nonatomic) float outputMeterLevel; @property (readonly, nonatomic) float inputMeterLevel; @property (readonly, nonatomic) long long inputAudioPowerSpectrumToken; @property (readonly, nonatomic) long long outputAudioPowerSpectrumToken; @property (nonatomic) int chatMode; @property (nonatomic) BOOL isFocus; @property (copy, nonatomic) NSString *currentFocus; @property (nonatomic) int packetsPerBundle; @property BOOL hasMic; @property float conferenceVolume; @property NSObject<VideoConferenceSpeakingDelegate> *speakingDelegate; @property NSObject<VideoConferenceChannelQualityDelegate> *qualityDelegate; @property unsigned int talkingPeersLimit; @property BOOL disableVAD; @property BOOL shouldTimeoutPackets; @property int upstreamBandwidth; @property int downstreamBandwidth; @property (readonly) int localFrameHeight; @property (readonly) int localFrameWidth; @property (nonatomic) unsigned int preferredCodec; @property (nonatomic) BOOL isUsingSuppression; @property (nonatomic) BOOL isGKVoiceChat; @property (readonly, nonatomic) VCVideoRule *conferenceCaptureRule; @property unsigned int lastActiveCall; @property BOOL isValid; @property (readonly) int deviceRole; @property (readonly) unsigned long long hash; @property (readonly) Class superclass; @property (readonly, copy) NSString *description; @property (readonly, copy) NSString *debugDescription; + (void)terminateProcess:(id)a0 terminateSource:(id)a1 agent:(struct opaqueRTCReporting { } *)a2; - (BOOL)setActive:(BOOL)a0; - (void)dealloc; - (void)unlock; - (void)NATTypeDictionaryUpdated:(id)a0; - (int)natType; - (void)triggerInterfaceChange; - (void)avConferenceScreenCaptureError:(id)a0; - (int)currentCameraID; - (void)session:(id)a0 cleanUpWithDelay:(long long)a1 error:(id)a2; - (int)stateForCallID:(unsigned int)a0; - (BOOL)canProcessAudio; - (void)captureAsFocus:(struct opaqueVCAudioBufferList { } *)a0; - (void)cleanupSession:(id)a0 didRemoteCancel:(BOOL)a1; - (void)session:(id)a0 withCallID:(unsigned int)a1 networkHint:(BOOL)a2; - (int)sipCallbackNotification:(int)a0 callID:(unsigned int)a1 msgIn:(const char *)a2 msgOut:(char *)a3 optional:(void *)a4 confIndex:(int *)a5; - (id)statsForCallID:(unsigned 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; })audioIOFormat; - (void)avConferencePreviewError:(id)a0; - (void)calculateMixingArrays:(unsigned int *)a0 talkingMask:(unsigned int)a1; - (unsigned int)calculateTalkingMaskAtTimeStamp:(unsigned int)a0; - (unsigned int)callIDForOpenSessionWithParticipantID:(id)a0; - (id)callMetadataForCallID:(unsigned int)a0; - (void)cameraAvailabilityDidChange:(BOOL)a0; - (void)cancelCallID:(unsigned int)a0; - (void)cancelCallID:(unsigned int)a0 error:(id)a1; - (void)captureAsFocusClient:(struct opaqueVCAudioBufferList { } *)a0; - (void)captureMeshMode:(struct opaqueVCAudioBufferList { } *)a0; - (void)cleanupManager; - (void)cleanupProc:(id)a0; - (void)cleanupQueues; - (void)cleanupSession:(id)a0 withDelay:(unsigned long long)a1; - (void)cleanupSpatialAudioForCallID:(unsigned int)a0; - (id)clientCaptureRule; - (BOOL)conferenceMatchesSourceDestinationInfo:(struct tagVCSourceDestinationInfo { int x0; union { struct { struct tagIPPORT { int x0; char x1[16]; union { unsigned int x0; unsigned char x1[16]; } x2; unsigned short x3; } x0; struct tagIPPORT { int x0; char x1[16]; union { unsigned int x0; unsigned char x1[16]; } x2; unsigned short x3; } x1; struct { BOOL x0; unsigned short x1; } x2; } x0; struct { int x0; int x1; struct tagIPPORT { int x0; char x1[16]; union { unsigned int x0; unsigned char x1[16]; } x2; unsigned short x3; } x2; int x3; } x1; struct { unsigned int x0; struct { char x0; unsigned short x1; unsigned char x2; unsigned short x3; unsigned char x4; } x1; BOOL x2; } x2; struct { id x0; } x3; } x1; unsigned int x2; struct tagVCSourceDestinationInfo *x3; void *x4; } *)a0; - (int)conferenceOperatingMode; - (void)connectionBlobForParticipantID:(id)a0 callID:(unsigned int)a1 block:(id /* block */)a2 queue:(id)a3 caller:(id)a4; - (id)connectionBlobForParticipantID:(id)a0 callID:(unsigned int *)a1 error:(id *)a2; - (void)defaultCleanupSession:(id)a0; - (BOOL)deregisterForVideoFramesWithDeviceRole:(int)a0; - (void)didChangeLocalVariablesForSession:(id)a0; - (void)didResumeAudioIO:(id)a0; - (void)didSuspendAudioIO:(id)a0; - (void)didUpdateBasebandCodec:(const struct _VCRemoteCodecInfo { unsigned int x0; double x1; } *)a0; - (void)forceNoICE:(BOOL)a0; - (BOOL)getIsAudioPaused:(BOOL *)a0 callID:(unsigned int)a1 error:(id *)a2; - (BOOL)getIsVideoPaused:(BOOL *)a0 callID:(unsigned int)a1 error:(id *)a2; - (void)handleCellTechChange:(int)a0 cellularMaxPktLen:(unsigned short)a1; - (BOOL)hasSessionWaitingForSIPInvite; - (id)initWithClientPid:(int)a0; - (unsigned int)initializeNewCallWithDeviceRole:(int)a0; - (unsigned int)initializeNewCallWithDeviceRole:(int)a0 reportingHierarchyToken:(id)a1; - (BOOL)initiateResolutionChangeToWidth:(int)a0 height:(int)a1 rate:(int)a2; - (void)inviteDataForParticipantID:(id)a0 callID:(unsigned int)a1 remoteInviteData:(id)a2 nonCellularCandidateTimeout:(unsigned long long)a3 block:(id /* block */)a4 queue:(id)a5 caller:(id)a6; - (id)inviteDataForParticipantID:(id)a0 callID:(unsigned int *)a1 remoteInviteData:(id)a2 nonCellularCandidateTimeout:(double)a3 error:(id *)a4; - (double)localBitrateForCallID:(unsigned int)a0; - (double)localFramerateForCallID:(unsigned int)a0; - (double)localPacketLossRateForCallID:(unsigned int)a0; - (id)loopbackSessionWaitingForSIPInvite; - (void)markUnfinishedSessions; - (BOOL)matchesCallID:(unsigned int)a0; - (BOOL)matchesOpenSessionForParticipantID:(id)a0; - (BOOL)matchesParticipantID:(id)a0; - (void)mediaRecorder:(id)a0 shouldProcessRequest:(id)a1 recipientID:(id)a2; - (unsigned int)momentsCapabilitiesWithNegotiationBlobMomentsSettings_Capabilities:(int)a0; - (int)natTypeForCallSessions:(const char *)a0; - (double)networkQualityForCallID:(unsigned int)a0; - (id)newSessionWithDeviceRole:(int)a0 reportingHierarchyToken:(id)a1; - (void)notifyDelegateOfLocalVariablesChange; - (BOOL)onVideoFrame:(struct opaqueCMSampleBuffer { } *)a0 frameTime:(struct { long long x0; int x1; unsigned int x2; long long x3; })a1 attribute:(struct { BOOL x0; BOOL x1; int x2; BOOL x3; BOOL x4; int x5; unsigned char x6; })a2; - (id)openSessionForParticipant:(id)a0; - (double)packetLossRateForCallID:(unsigned int)a0; - (unsigned char)powerFloatToInt:(float)a0; - (float)powerIntToFloat:(unsigned char)a0; - (void)processRelayRequestResponse:(unsigned int)a0 responseDict:(id)a1 didOriginateRequest:(BOOL)a2; - (void)processRelayUpdate:(unsigned int)a0 updateDict:(id)a1 didOriginateRequest:(BOOL)a2; - (void)processRemoteIPChange:(id)a0 callID:(unsigned int)a1; - (unsigned int)pruneQuietestPeers:(unsigned int)a0 talking:(unsigned int)a1 mask:(unsigned int)a2 meters:(char *)a3; - (void)pullAudioSamples:(struct opaqueVCAudioBufferList { } *)a0; - (int)pullDecodedAsFocus:(struct opaqueVCAudioBufferList { } *)a0; - (int)pullDecodedAsFocusClient:(struct opaqueVCAudioBufferList { } *)a0; - (int)pullDecodedMeshMode:(struct opaqueVCAudioBufferList { } *)a0; - (void)pushAudioSamples:(struct opaqueVCAudioBufferList { } *)a0; - (void)rdlock; - (void)reactionDidStart:(id)a0; - (BOOL)recvSamplesForSession:(id)a0 sampleBuffer:(struct opaqueVCAudioBufferList { } *)a1; - (BOOL)registerForVideoFramesWithDeviceRole:(int)a0 captureRule:(id)a1 isUnpausing:(BOOL)a2; - (void)remoteAudioDidPause:(BOOL)a0 callID:(unsigned int)a1; - (double)remoteBitrateForCallID:(unsigned int)a0; - (void)remoteCancelledCallID:(unsigned int)a0; - (struct CGSize { double x0; double x1; })remoteFrameSizeForCallID:(unsigned int)a0; - (double)remoteFramerateForCallID:(unsigned int)a0; - (double)remotePacketLossRateForCallID:(unsigned int)a0; - (void)remoteVideoDidPause:(BOOL)a0 callID:(unsigned int)a1; - (double)roundTripTimeForCallID:(unsigned int)a0; - (void)sendARPLData:(id)a0 toCallID:(unsigned int)a1; - (void)sendData:(id)a0 toCallID:(unsigned int)a1 encrypted:(BOOL)a2; - (void)serverDidDie; - (void)session:(id)a0 cancelRelayRequest:(id)a1; - (void)session:(id)a0 changeVideoRulesToCaptureRule:(id)a1 encodeRule:(id)a2 featureListString:(id)a3; - (void)session:(id)a0 connectionDidChangeWithLocalInterfaceType:(id)a1 remoteInterfaceType:(id)a2 callID:(unsigned int)a3; - (void)session:(id)a0 didChangeRemoteScreenAttributes:(id)a1; - (void)session:(id)a0 didChangeVideoRule:(id)a1; - (void)session:(id)a0 didPauseAudio:(BOOL)a1 error:(id)a2; - (void)session:(id)a0 didPauseVideo:(BOOL)a1 error:(id)a2; - (void)session:(id)a0 didReceiveARPLData:(id)a1 fromCallID:(unsigned int)a2; - (void)session:(id)a0 didReceiveData:(id)a1 messageType:(unsigned int)a2 withCallID:(unsigned int)a3; - (void)session:(id)a0 didReceiveMomentsRequest:(id)a1; - (void)session:(id)a0 didStart:(BOOL)a1 connectionType:(unsigned int)a2 localInterfaceType:(id)a3 remoteInterfaceType:(id)a4 error:(id)a5; - (BOOL)session:(id)a0 didStopVideoIO:(BOOL)a1 error:(id *)a2; - (void)session:(id)a0 didStopWithError:(id)a1; - (void)session:(id)a0 initiateRelayRequest:(id)a1; - (void)session:(id)a0 isSendingAudio:(BOOL)a1 error:(id)a2; - (void)session:(id)a0 localAudioEnabled:(BOOL)a1 withCallID:(unsigned int)a2 error:(id)a3; - (void)session:(id)a0 localIPChange:(id)a1 withCallID:(unsigned int)a2; - (void)session:(id)a0 packMeters:(char *)a1 withLength:(char *)a2; - (void)session:(id)a0 receivedNoPacketsForSeconds:(double)a1; - (BOOL)session:(id)a0 receivedRemoteFrame:(struct __CVBuffer { } *)a1 atTime:(struct { long long x0; int x1; unsigned int x2; long long x3; })a2 withScreenAttributes:(id)a3 videoAttributes:(id)a4 isFirstFrame:(BOOL)a5 isVideoPaused:(BOOL)a6; - (void)session:(id)a0 remoteAudioEnabled:(BOOL)a1 withCallID:(unsigned int)a2; - (void)session:(id)a0 remoteCallingModeChanged:(unsigned int)a1 withCallID:(unsigned int)a2; - (void)session:(id)a0 remoteMediaStalled:(BOOL)a1; - (void)session:(id)a0 sendRelayResponse:(id)a1; - (void)session:(id)a0 setMomentsCapabilities:(unsigned int)a1 imageType:(int)a2 videoCodec:(int)a3; - (void)session:(id)a0 setRemoteBasebandCodecType:(unsigned int)a1 sampleRate:(double)a2; - (void)session:(id)a0 startAudioWithFarEndVersionInfo:(struct VoiceIOFarEndVersionInfo { unsigned char x0[64]; unsigned char x1[64]; unsigned int x2; } *)a1 internalFrameFormat:(const struct tagVCAudioFrameFormat { 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; } x0; unsigned int x1; } *)a2 completionHandler:(id /* block */)a3; - (BOOL)session:(id)a0 startVideoReceive:(id *)a1; - (BOOL)session:(id)a0 startVideoSend:(id *)a1 captureRuleWifi:(id)a2 captureRuleCell:(id)a3 interface:(int)a4 isUnpausing:(BOOL)a5; - (void)session:(id)a0 stopAudioWithCompletionHandler:(id /* block */)a1; - (BOOL)session:(id)a0 stopVideoReceive:(id *)a1 isPausing:(BOOL)a2; - (void)session:(id)a0 withCallID:(unsigned int)a1 videoIsDegraded:(BOOL)a2 isRemote:(BOOL)a3; - (id)sessionForIncomingParticipantID:(id)a0; - (id)sessionForParticipantID:(id)a0; - (id)sessionForSourceDestinationInfo:(struct tagVCSourceDestinationInfo { int x0; union { struct { struct tagIPPORT { int x0; char x1[16]; union { unsigned int x0; unsigned char x1[16]; } x2; unsigned short x3; } x0; struct tagIPPORT { int x0; char x1[16]; union { unsigned int x0; unsigned char x1[16]; } x2; unsigned short x3; } x1; struct { BOOL x0; unsigned short x1; } x2; } x0; struct { int x0; int x1; struct tagIPPORT { int x0; char x1[16]; union { unsigned int x0; unsigned char x1[16]; } x2; unsigned short x3; } x2; int x3; } x1; struct { unsigned int x0; struct { char x0; unsigned short x1; unsigned char x2; unsigned short x3; unsigned char x4; } x1; BOOL x2; } x2; struct { id x0; } x3; } x1; unsigned int x2; struct tagVCSourceDestinationInfo *x3; void *x4; } *)a0; - (void)setBWEOptions:(BOOL)a0 UseNewBWEMode:(BOOL)a1 FakeLargeFrameMode:(BOOL)a2 ProbingSenderLog:(BOOL)a3; - (void)setCallReport:(unsigned int)a0 withReport:(id)a1; - (void)setCallReportProtobuf:(unsigned int)a0 withProtobufData:(id)a1 forMetricID:(long long)a2; - (void)setCanProcessAudio:(BOOL)a0; - (void)setConferenceOperatingMode:(int)a0; - (void)setConferenceState:(unsigned int)a0 forCallID:(unsigned int)a1; - (void)setConferenceVisualRectangle:(struct CGRect { struct CGPoint { double x0; double x1; } x0; struct CGSize { double x0; double x1; } x1; })a0 forCallID:(unsigned int)a1; - (BOOL)setPauseAudio:(BOOL)a0; - (BOOL)setPauseAudio:(BOOL)a0 callID:(unsigned int)a1 error:(id *)a2; - (BOOL)setPauseVideo:(BOOL)a0; - (BOOL)setPauseVideo:(BOOL)a0 callID:(unsigned int)a1 error:(id *)a2; - (void)setPeerCN:(id)a0 callID:(unsigned int)a1; - (void)setPeerProtocolVersion:(unsigned int)a0 forCallID:(unsigned int)a1; - (void)setPeerReportingID:(id)a0 sessionID:(id)a1 callID:(unsigned int)a2; - (void)setSendAudio:(BOOL)a0 forCallID:(unsigned int)a1; - (void)setSessionID:(id)a0 callID:(unsigned int)a1; - (void)setUpAudioIO:(int)a0 callID:(unsigned int)a1; - (void)setupNATObserver; - (int)setupSpatialAudioWithCallID:(unsigned int)a0; - (BOOL)shouldReinitializeCallWithDuration:(double)a0 forCallID:(unsigned int)a1; - (BOOL)shouldSendAudioForCallID:(unsigned int)a0; - (void)shouldSendBlackFrame:(BOOL)a0 callID:(id)a1; - (void)sourceFrameRateDidChange:(unsigned int)a0; - (BOOL)startConnectionWithParticipantID:(id)a0 callID:(unsigned int)a1 oldCallID:(unsigned int)a2 usingInviteData:(id)a3 isCaller:(BOOL)a4 relayResponseDict:(id)a5 didOriginateRelayRequest:(BOOL)a6 capabilities:(id)a7 idsSocket:(int)a8 destination:(id)a9 error:(id *)a10; - (BOOL)startConnectionWithParticipantID:(id)a0 callID:(unsigned int)a1 usingInviteData:(id)a2 isCaller:(BOOL)a3 capabilities:(id)a4 idsSocket:(int)a5 destination:(id)a6 error:(id *)a7; - (BOOL)startConnectionWithParticipantID:(id)a0 callID:(unsigned int)a1 usingInviteData:(id)a2 isCaller:(BOOL)a3 relayResponseDict:(id)a4 didOriginateRelayRequest:(BOOL)a5 capabilities:(id)a6 idsSocket:(int)a7 destination:(id)a8 error:(id *)a9; - (void)stopAllCalls:(id)a0; - (void)stopCallID:(unsigned int)a0; - (void)stopCallID:(unsigned int)a0 didRemoteCancel:(BOOL)a1 error:(id)a2; - (BOOL)stopVideoSend:(BOOL)a0 error:(id *)a1; - (void)thermalLevelDidChange:(int)a0; - (void)threadSafeCleanupSession:(id)a0; - (int)tryrdlock; - (void)updateAudioTimestampsForSession:(id)a0 withNewSampleTime:(unsigned int)a1 hostTime:(double)a2 numSamples:(int)a3; - (void)updateCapabilities:(id)a0 forCallID:(unsigned int)a1; - (void)updateCapabilities:(id)a0 forSession:(id)a1; - (void)updateMeter:(unsigned char)a0 forParticipant:(id)a1 atIndex:(unsigned int)a2; - (void)updateMeters:(unsigned short)a0; - (BOOL)updateSpeaking:(unsigned int)a0 timeStamp:(unsigned int)a1; - (void)updatedConnectedPeers:(id)a0; - (void)updatedMutedPeers:(id)a0 forParticipantID:(id)a1; - (void)vcAudioPowerLevelMonitor:(id)a0 isAudioBelowThreshold:(BOOL)a1; - (void)warmupForCall; - (void)wrlock; @end