@class NSMutableDictionary, VCMediaRecorder, VCAudioIO, NSDictionary, VCCallInfoBlob, AVCBasebandCongestionDetector, NSObject, NSMutableArray, VCSecurityKeyManager, VCNetworkFeedbackController, NSString, VCAudioRuleCollection, AVCStatisticsCollector, VCSessionMediaNegotiator, VCRedundancyControllerVideo, NSArray, NSData, VCSessionParticipantOneToOneConfig; @protocol OS_dispatch_queue, VCSessionParticipantDelegate, VCSessionParticipantStreamDelegate; @interface VCSessionParticipant : VCObject <VCMediaStreamDelegate, VCSecurityEventHandler, VCAudioIOSink, VCAudioIOSource, VCAudioIODelegate, VCConnectionChangedHandler, VCRedundancyControllerDelegate, VCAudioPowerSpectrumSourceDelegate, VCMediaStreamGroupDelegate> { unsigned int _state; NSObject<OS_dispatch_queue> *_participantQueue; int _processId; id _delegate; id _streamDelegate; NSString *_sessionUUID; NSString *_idsDestination; NSData *_mediaBlobCompressed; NSDictionary *_participantInfo; unsigned int _transportSessionID; int _deviceRole; long long _direction; double _lastParticipantMKMRecoveryTime; double _participantMKMRecoveryTimeout; int _decryptionTimeOutInterval; BOOL _audioPausedToStart; BOOL _videoPausedToStart; NSMutableDictionary *_mediaTypeSettingsDict; VCAudioIO *_audioIO; unsigned int _preferredIOSampleRate; unsigned int _preferredIOSamplesPerFrame; VCRedundancyControllerVideo *_videoRedundancyController; id _reportingAgentWeak; BOOL _isGKVoiceChat; BOOL _isLowLatencyAudio; NSMutableDictionary *_streamGroups; NSMutableArray *_micStreamGroups; NSMutableArray *_videoStreamGroups; VCSecurityKeyManager *_securityKeyManager; VCNetworkFeedbackController *_networkFeedbackController; NSMutableDictionary *_mediaTypeMixingList; } @property (readonly, nonatomic) NSString *uuid; @property (readonly, nonatomic) unsigned long long idsParticipantID; @property (readonly, nonatomic) NSData *opaqueData; @property (readonly, nonatomic) id<VCSessionParticipantDelegate> delegate; @property (nonatomic) id<VCSessionParticipantStreamDelegate> streamDelegate; @property (nonatomic, getter=isMuted) BOOL muted; @property (nonatomic, getter=isAudioEnabled) BOOL audioEnabled; @property (nonatomic, getter=isVideoEnabled) BOOL videoEnabled; @property (nonatomic, getter=isScreenEnabled) BOOL screenEnabled; @property (nonatomic, getter=isAudioPaused) BOOL audioPaused; @property (nonatomic, getter=isVideoPaused) BOOL videoPaused; @property (readonly, nonatomic) float audioPosition; @property (readonly, nonatomic) float volume; @property (readonly, nonatomic) NSArray *allParticipantStreamInfo; @property (readonly, nonatomic) union tagNTP { unsigned long long wide; struct { unsigned int frac; unsigned int sec; } time; } creationTime; @property (readonly, nonatomic) NSMutableDictionary *participantStreamTokens; @property (retain, nonatomic) AVCStatisticsCollector *statisticsCollector; @property (retain, nonatomic) AVCBasebandCongestionDetector *basebandCongestionDetector; @property (nonatomic) unsigned int cellularUniqueTag; @property (readonly, nonatomic) VCAudioRuleCollection *supportedAudioRules; @property (readonly, nonatomic) VCSessionMediaNegotiator *mediaNegotiator; @property (nonatomic, getter=isLocalOnWiFi) BOOL localOnWiFi; @property (nonatomic) struct opaqueRTCReporting { } *reportingAgent; @property (retain, nonatomic) VCSessionParticipantOneToOneConfig *oneToOneConfig; @property (nonatomic) struct tagVCMediaQueue { } *mediaQueue; @property (nonatomic, getter=isOneToOneModeEnabled) BOOL oneToOneModeEnabled; @property (readonly) VCCallInfoBlob *callInfoBlob; @property (readonly, nonatomic) int operatingMode; @property (nonatomic) BOOL sharingEnabled; @property (readonly, nonatomic) NSDictionary *mediaTypeMixingList; @property (nonatomic) unsigned char presentationState; @property (retain, nonatomic) VCMediaRecorder *mediaRecorder; @property (readonly) unsigned long long hash; @property (readonly) Class superclass; @property (readonly, copy) NSString *description; @property (readonly, copy) NSString *debugDescription; + (void)addCodecModesForPayload:(int)a0 toCodecConfig:(id)a1; + (void)applyVideoNegotiatedSettings:(id)a0 toStreamConfiguration:(id)a1 withFeatureStringDictionary:(id)a2; + (unsigned int)mediaStreamGroupStateToVCStreamGroupState:(unsigned int)a0; + (id)mediaTypesFromStreamGroupID:(unsigned int)a0; + (id)participantDataWithMediaNegotiatorVersion:(int)a0 participantData:(id)a1; + (id)participantDataWithParticipantData:(id)a0 isReinit:(BOOL)a1; + (id)participantDataWithParticipantInfo:(id)a0; + (id)participantInfoWithParticipantData:(id)a0; + (id)streamGroupIDsFromParticipantData:(id)a0; - (BOOL)setVolume:(float)a0; - (void)dealloc; - (void)start; - (void)stop; - (BOOL)setState:(unsigned int)a0; - (id)microphoneGroup; - (void)reportCameraCompositionEnabled:(BOOL)a0; - (id)stopScreenGroup; - (id)cameraGroupsExt; - (void)dispatchedStart; - (BOOL)rtcpPSFBForLTRAckStoreBagConfig; - (id)applyMediaState:(unsigned int)a0 forMediaType:(unsigned int)a1; - (void)applyScreenEnabledSetting:(BOOL)a0; - (id)applyVideoEnabledSetting:(BOOL)a0; - (void)audioPowerSpectrumSinkDidRegister; - (void)audioPowerSpectrumSinkDidUnregister; - (void)callDelegateWithBlock:(id /* block */)a0; - (void)callStreamDelegateWithBlock:(id /* block */)a0; - (id)cameraGroups; - (id)captionsGroup; - (int)captureSourceIDFromStreamGroupID:(unsigned int)a0; - (void)collectAudioChannelMetrics:(struct { unsigned int x0; unsigned int x1[5]; unsigned int x2; double x3; struct CGSize { double x0; double x1; } x4; double x5; unsigned int x6; double x7; unsigned int x8; unsigned int x9; } *)a0; - (void)collectCaptionsChannelMetrics:(struct { unsigned int x0; unsigned int x1[5]; unsigned int x2; double x3; struct CGSize { double x0; double x1; } x4; double x5; unsigned int x6; double x7; unsigned int x8; unsigned int x9; } *)a0; - (void)collectVideoChannelMetrics:(struct { unsigned int x0; unsigned int x1[5]; unsigned int x2; double x3; struct CGSize { double x0; double x1; } x4; double x5; unsigned int x6; double x7; unsigned int x8; unsigned int x9; } *)a0; - (BOOL)completeStreamSetup:(id)a0; - (BOOL)configureAudioIOWithDeviceRole:(int)a0 operatingMode:(int)a1; - (BOOL)configureMultiwayStreamGroups; - (BOOL)configureOneToOneAudioStreamsWithDeviceRole:(int)a0; - (BOOL)configureOneToOneAudioStreamsWithDeviceRole:(int)a0 streamInfoArray:(id)a1; - (BOOL)configureOneToOneVideoStreamsWithDeviceRole:(int)a0; - (BOOL)configureOneToOneVideoStreamsWithDeviceRole:(int)a0 streamInfoArray:(id)a1; - (BOOL)configureOneToOneWithConfig:(id)a0; - (BOOL)configureStreamInfosForMultiway:(id)a0 streamGroupID:(unsigned int)a1; - (BOOL)configureWithDeviceRole:(int)a0 negotiatedVideoEnabled:(BOOL)a1 negotiatedScreenEnabled:(BOOL)a2 operatingMode:(int)a3; - (void)createRedundancyControllers; - (void)didChangeActualNetworkBitrateForStreamGroup:(id)a0; - (void)didChangeReceivingStreamsForStreamGroup:(id)a0; - (void)didChangeSendingStreamsForStreamGroup:(id)a0; - (void)didDecryptionTimeOutForMKMRecoveryForStreamGroup:(id)a0; - (void)didEncryptionKeyRollTimeout; - (void)didMediaDecryptionTimeOutForStreamGroup:(id)a0; - (void)didResumeAudioIO:(id)a0; - (void)didSuspendAudioIO:(id)a0; - (void)didUpdateBasebandCodec:(const struct _VCRemoteCodecInfo { unsigned int x0; double x1; } *)a0; - (void)dispatchSetMediaType:(unsigned int)a0 mixingWithMediaType:(unsigned int)a1; - (BOOL)dispatchedConfigureWithDeviceRole:(int)a0 negotiatedVideoEnabled:(BOOL)a1 negotiatedScreenEnabled:(BOOL)a2 operatingMode:(int)a3; - (void)dispatchedSetAudioEnabled:(BOOL)a0; - (void)dispatchedSetAudioPaused:(BOOL)a0; - (void)dispatchedSetMediaState:(unsigned int)a0 forMediaType:(unsigned int)a1; - (void)dispatchedSetScreenEnabled:(BOOL)a0; - (void)dispatchedSetVideoEnabled:(BOOL)a0; - (void)dispatchedSetVideoPaused:(BOOL)a0; - (void)dispatchedStartOneToOneStreams; - (void)dispatchedStop; - (id)generateEncryptionKey; - (id)getAudioDumpName; - (void)handleActiveConnectionChange:(id)a0; - (BOOL)handleEncryptionInfoChange:(id)a0; - (void)handleRemoteOneToOneSwitchWithStreamGroup:(id)a0 fromStreamID:(unsigned short)a1 toStreamID:(unsigned short)a2; - (void)handleStreamGroupsActiveConnectionChange:(id)a0; - (void)handleSymptomReportForDecryptionError; - (id)initWithConfig:(id)a0 delegate:(id)a1; - (BOOL)isActiveMediaType:(unsigned int)a0; - (BOOL)isAudioStream:(id)a0; - (BOOL)isOneToOneTemporalSupportedForSettings:(id)a0 streamDirection:(long long)a1; - (BOOL)isStreamGroupActive:(id)a0; - (BOOL)isVideoStream:(id)a0; - (void)logAllStreamTokens; - (id)newAudioRateControlConfigWithMediaControlInfoVersion:(unsigned char)a0 enableFeedbackController:(BOOL)a1 isOneToOne:(BOOL)a2; - (id)newOneToOneAudioStreamConfigWithAudioSettings:(id)a0 streamDirection:(long long)a1 streamGroupId:(unsigned int)a2 streamSsrc:(unsigned int)a3; - (id)newOneToOneVideoStreamConfigWithStreamDirection:(long long)a0 streamGroupId:(unsigned int)a1 streamSsrc:(unsigned int)a2 encodingType:(unsigned char)a3 videoSettings:(id)a4; - (id)newOneToOneVideoStreamMultiwayConfiguration:(unsigned char)a0 streamGroupId:(unsigned int)a1 videoSettings:(id)a2 streamDirection:(long long)a3; - (id)newVideoRateControlConfigWithMediaControlInfoVersion:(unsigned char)a0 enableMediaControlInfoGenerator:(BOOL)a1 enableFeedbackController:(BOOL)a2 isOneToOne:(BOOL)a3; - (void)onDidResumeAudio; - (void)onPauseAudioStreams; - (void)onStartAudioIO; - (long long)participantMicrophoneToken; - (long long)participantScreenToken; - (char *)participantStateToString:(unsigned int)a0; - (long long)participantVideoToken; - (id)pauseAudioStreams:(BOOL)a0; - (id)pauseVideo:(BOOL)a0; - (unsigned int)preferredIOSampleRateForGroupID:(unsigned int)a0; - (unsigned int)preferredIOSamplesPerFrameForGroupID:(unsigned int)a0; - (unsigned int)preferredRTPTimestampRateForGroupID:(unsigned int)a0; - (void)pullAudioSamples:(struct opaqueVCAudioBufferList { } *)a0; - (void)pushAudioSamples:(struct opaqueVCAudioBufferList { } *)a0; - (void)redundancyController:(id)a0 redundancyIntervalDidChange:(double)a1; - (void)redundancyController:(id)a0 redundancyPercentageDidChange:(unsigned int)a1; - (void)resetDecryptionTimeout; - (BOOL)rtcpPSFBForFeedbackStoreBagConfig; - (id)screenGroup; - (int)securityKeyHolderUsageForStreamConfigDirection:(long long)a0; - (void)sendAudioPowerSpectrumSourceRegistration:(BOOL)a0; - (void)serverDidDie; - (BOOL)setAudioPosition:(float)a0; - (id)setAudioStreamGroupsPaused:(BOOL)a0; - (id)setCameraStreamGroupsPaused:(BOOL)a0; - (void)setMediaState:(unsigned int)a0 forMediaType:(unsigned int)a1; - (void)setMediaType:(unsigned int)a0 mixingWithMediaType:(unsigned int)a1; - (id)setPaused:(BOOL)a0 onStreamGroups:(id)a1; - (void)setStreamGroup:(unsigned int)a0 syncSourceStreamGroupID:(unsigned int)a1; - (BOOL)setupAudioStreamConfiguration:(id)a0 audioRules:(id)a1; - (BOOL)setupMediaSyncForStreamGroup:(id)a0; - (void)setupMediaTypeSettingsWithConfig:(id)a0; - (void)setupNetworkAddressesForMediaConfig:(id)a0; - (void)setupPreferredIOSettings; - (BOOL)setupSecurityKeyHolderForStreamConfig:(id)a0; - (BOOL)setupStreamGroupMediaSync; - (BOOL)shouldSetPause:(BOOL)a0 onStream:(id)a1; - (void)startAudioDump; - (id)startAudioIO; - (id)startCameraStreamGroups; - (id)startMediaStreams:(id)a0; - (id)startMicStreamGroups; - (void)startMultiwayStreams; - (void)startOneToOneStreams; - (id)startScreenGroup; - (id)startStreamGroups; - (id)startStreamGroups:(id)a0; - (void)startSystemAudioCapture; - (id)startVideo; - (void)stopAudioDump; - (id)stopAudioIO; - (void)stopAudioIOCompletion; - (id)stopAudioStreams; - (void)stopInternal; - (id)stopMediaStreams:(id)a0; - (id)stopMicStreamGroups; - (id)stopMultiwayStreams; - (void)stopOneToOneStreams; - (void)stopStreamGroups; - (id)stopStreamGroups:(id)a0; - (void)stopSystemAudioCapture; - (void)stopVideoCaptureClient; - (void)streamGroup:(id)a0 didChangeMediaPriority:(unsigned char)a1; - (void)streamGroup:(id)a0 didChangePlayoutRTPTime:(struct { long long x0; int x1; unsigned int x2; long long x3; })a1; - (void)streamGroup:(id)a0 didChangeState:(unsigned int)a1; - (void)streamGroup:(id)a0 didRemoteEnableChange:(BOOL)a1; - (void)streamGroup:(id)a0 didRemotePauseChange:(BOOL)a1; - (void)streamGroup:(id)a0 didRequestRedundancy:(BOOL)a1; - (void)streamGroup:(id)a0 didSuspendStreams:(BOOL)a1; - (void)streamGroup:(id)a0 didSwitchFromStreamID:(unsigned short)a1 toStreamID:(unsigned short)a2; - (void)streamGroup:(id)a0 remoteMediaStalled:(BOOL)a1 duration:(double)a2; - (void)streamGroup:(id)a0 requestKeyFrameGenerationWithStreamID:(unsigned short)a1 firType:(int)a2; - (unsigned int)streamGroupStateFromStreamGroupID:(unsigned int)a0; - (id)streamGroupWithID:(unsigned int)a0; - (id)streamGroupsForIDs:(id)a0; - (id)streamGroupsForMediaType:(unsigned int)a0; - (void)swapScreenStreamGroupSyncSourceWithState:(unsigned int)a0; - (id)systemAudioGroup; - (id)updateActiveStateForStreamGroup:(id)a0; - (void)updateAudioSpectrumState; - (BOOL)updateConfigurationWithDeviceRole:(int)a0; - (id)updateMediaState:(unsigned int)a0 forStreamGroups:(id)a1; - (BOOL)updateMediaStatesWithConfig:(id)a0; - (void)updateOneToOneVideoStreamCustomResolution:(id)a0 videoSettings:(id)a1; - (id)updateStreamGroups:(id)a0; - (void)updateVideoPaused:(BOOL)a0; - (void)vcMediaStream:(id)a0 requestKeyFrameGenerationWithStreamID:(unsigned short)a1 firType:(int)a2; - (void)vcMediaStreamServerDidDie:(id)a0; @end