@class VCAudioTier, NSDictionary, VCRedundancyControllerAudio, VCAudioRedBuilder, VCTransportSession, VCPacketBundler, NSMutableArray, NSString, VCAudioTierPicker, AVCStatisticsCollector, NSArray, VCAudioPayload, VCAudioPayloadConfig; @protocol VCAudioTransmitterDelegate; @interface VCAudioTransmitter : NSObject <VCAudioIOSink, VCConnectionChangedHandler> { VCAudioRedBuilder *_redBuilder; VCRedundancyControllerAudio *_redundancyController; struct opaqueVCAudioBufferList { } *_encodeBuffer; BOOL _lastIsTalking; double _lastTierSwitch; double _audioInterval; int _audioTierChangeRequestCount; unsigned int _maxAudioPacketSize; unsigned int _constantTransportOverhead; long long _blockSize; float _blockSeconds; double _lastUpdateQualityIndicator; VCAudioTier *_requestedAudioTier; char *_lastInputSampleBuffer; unsigned int _lastInputSampleBufferSize; int _audioHeaderSize; BOOL _audioTierHysteresis; BOOL _lastAudioStalled; void *_packetThread; unsigned int _currentTargetBitrate; unsigned int _currentDuplication; unsigned int _redundancyPercentage; double _redundancyInterval; unsigned int _redundancyControllerNumPayloads; unsigned int _redundancyControllerMaxDelay20ms; AVCStatisticsCollector *_statisticsCollector; unsigned int _sentAudioBytes; unsigned int _encodedBytes; unsigned int _totalTxAudioBytes; unsigned int _estimateTxAudioBytes; unsigned int _audioFrameCounter; unsigned int _silenceFrameCounter; unsigned int _vadSegmentCounter; struct tagHANDLE { int x0; } *_rtpHandle; struct tagHANDLE { int x0; } *_afrc; struct tagHANDLE { int x0; } *_mediaQueue; struct tagHANDLE { int x0; } *_rtpVideo; void *_controlInfoGenerator; BOOL _useRateControl; BOOL _isUseCaseWatchContinuity; BOOL _allowAudioSwitching; BOOL _supportsAdaptation; BOOL _needsPacketThread; BOOL _isLocalCellular_LowestConnectionQuality; BOOL _isRemoteCellular_LowestConnectionQuality; BOOL _isConnectedOnIPv6_LowestConnectionQuality; BOOL _includeRedSequenceOffset; unsigned int _redNumPayloads; unsigned int _redMaxDelay20ms; BOOL _transmitROC; NSMutableArray *_audioPayloads; VCAudioPayload *_currentDTXPayload; VCAudioPayload *_currentAudioPayload; int _currentRedPayloadType; unsigned int _currentAudioCap; struct tagVCAudioFrameFormat { struct AudioStreamBasicDescription { double mSampleRate; unsigned int mFormatID; unsigned int mFormatFlags; unsigned int mBytesPerPacket; unsigned int mFramesPerPacket; unsigned int mBytesPerFrame; unsigned int mChannelsPerFrame; unsigned int mBitsPerChannel; unsigned int mReserved; } format; unsigned int samplesPerFrame; } _inputFormat; struct opaqueRTCReporting { } *_reportingAgent; int _reportingModuleID; VCTransportSession *_transportSession; id _delegate; unsigned int _tierNetworkBitrate; unsigned int _qualityIndex; int _ratType; double _lastReportingCallbackTime; double _lastReportingCallbackTimeShort; struct tagVCIDSChannelDataFormat { unsigned short streamIDs[12]; unsigned char numOfStreamIDs; BOOL probingGroupIDIsSet; unsigned short probingGroupID; unsigned char priority; BOOL pktCountingFlag; BOOL participantIDIsSet; unsigned long long participantID; BOOL participantGenerationCounterIsSet; BOOL ignorePriority; BOOL statsIDIsSet; unsigned short statsID; struct { unsigned short serverTimestamp; unsigned short serverPacketInterval; unsigned short totalServerPacketReceived; unsigned short totalServerPacketSent; unsigned short uplinkBandwidthEstimate; } statsPayload; BOOL isTransitionPacket; BOOL isHopByHopEncrypted; BOOL encryptionSequenceNumberIDIsSet; unsigned long long encryptionSequenceNumber; BOOL baseLayerStreamIdIsSet; unsigned short baseLayerStreamId; BOOL isRetransmitted; BOOL isHighlyBurstyTraffic; BOOL requireOneToOneProbingSequence; BOOL relayServerPassThroughPacket; } _idsChannelDataFormat; BOOL _alwaysOnAudioRedundancyEnabled; BOOL _cellularAllowRedLowBitratesEnabled; BOOL _wifiAllowRedLowBitratesEnabled; struct tagVCMemoryPool { struct { void *x0; long long x1; } x0; unsigned long long x1; } *_audioBundlePool; unsigned long long _remoteIDSParticipantID; BOOL _useChannelDataFormat; BOOL _supportsCodecBandwidthUpdate; struct ifnet_interface_advisory { union { struct { unsigned char version; unsigned char direction; unsigned short _reserved; int rate_trend_suggestion; unsigned long long timestamp; unsigned long long max_bandwidth; unsigned long long total_byte_count; unsigned long long average_throughput; unsigned int flushable_queue_size; unsigned int non_flushable_queue_size; unsigned int average_delay; unsigned char frequency_band; unsigned char intermittent_state; unsigned short estimated_intermittent_period; unsigned short single_outage_period; unsigned char bt_coex; unsigned char quality_score_delay; unsigned char quality_score_loss; unsigned char quality_score_channel; } ; struct { struct ifnet_interface_advisory_header { unsigned char version; unsigned char direction; unsigned char interface_type; unsigned char reserved; } header; struct ifnet_interface_advisory_capacity { int rate_trend_suggestion; unsigned long long timestamp; unsigned long long max_bandwidth; unsigned long long total_byte_count; unsigned long long average_throughput; unsigned int flushable_queue_size; unsigned int non_flushable_queue_size; unsigned int average_delay; } capacity; union { struct ifnet_interface_advisory_wifi_context { unsigned char frequency_band; unsigned char intermittent_state; unsigned short estimated_intermittent_period; unsigned short single_outage_period; unsigned char bt_coex; unsigned char quality_score_delay; unsigned char quality_score_loss; unsigned char quality_score_channel; unsigned char radio_coex; unsigned short wlan_duty_cycle; unsigned int wifi_observed_tx_bitrate[6]; } wifi_context; struct ifnet_interface_advisory_cell_context { unsigned char radio_access_technology; short reference_signal_level; short signal_level; char signal_quality; unsigned char uplink_bler; unsigned char downlink_bler; unsigned char bandwidth_limitation_indication; unsigned char cdrx_state; unsigned short cdrx_cycle; unsigned short estimated_outage_period; unsigned char outage_state; unsigned char __pad; } cell_context; } ; } ; } ; } _lastNWConnectionNotification; struct tagVCCryptor { } *_sframeCryptor; struct tagVCAudioIssueDetector { } *_audioIssueDetector; BOOL _audioDumpEnabled; struct tagVCAudioDump { } *_encoderOutAudioDump; struct tagVCAudioDump { } *_encoderInAudioDump; struct tagVCAudioDumpPayloadInfo { BOOL audioDumpEnabled; int payloadType; BOOL isOctetAligned; BOOL isEVSHeaderFull; struct AudioStreamBasicDescription *format; } _payloadInfo; int _payloadUsed; BOOL _canSendPacket; int _sentBytes; unsigned char _tierPickerMode; BOOL _ramStadSRCEnabled; unsigned int _rtpTimestampBase; BOOL _shouldApplyRedAsBoolean; unsigned int _sentAudioBytesShort; unsigned int _packetExpirationTimeInMillisecond; BOOL _targetBitrateIsAudioOnly; } @property (retain, nonatomic) VCAudioTierPicker *audioTierPicker; @property (readonly, nonatomic) VCAudioPayloadConfig *currentAudioPayloadConfig; @property (readonly, nonatomic) VCPacketBundler *audioBundler; @property (readonly, nonatomic) VCAudioTier *currentAudioTier; @property (readonly, nonatomic) int audioTxBitrate; @property (readonly, nonatomic) int actualAudioSendingBitrate; @property (readonly, nonatomic) unsigned int lastSentAudioSampleTime; @property (readonly, nonatomic) unsigned int sentAudioBytes; @property (readonly, nonatomic) unsigned int encodedBytes; @property (readonly, nonatomic) unsigned int redNumPayloads; @property (readonly, nonatomic) unsigned int redMaxDelay20ms; @property (readonly, nonatomic) NSDictionary *dtxMetrics; @property (nonatomic) int operatingMode; @property unsigned char inputMeter; @property id<VCAudioTransmitterDelegate> delegate; @property (readonly, nonatomic) BOOL isRedEnabled; @property (readonly, nonatomic) BOOL ignoreSilence; @property (nonatomic) unsigned int targetBitrate; @property (nonatomic) unsigned int rateChangeCounter; @property (nonatomic) struct { unsigned int averageNetworkBitrate; unsigned int networkBitrate[5]; unsigned int averageMediaBitrate; double averageFramerate; struct CGSize { double width; double height; } frameResolution; double lastAudioHostTime; unsigned int lastAudioSampleTime; double lastVideoHostTime; unsigned int lastVideoSampleTime; unsigned int noVoiceActivityPacketCount; } currentChannelMetrics; @property (nonatomic) BOOL isAudioStalled; @property (nonatomic) int qualityIndicator; @property (nonatomic) unsigned int maxIDSStreamIdCount; @property (retain, nonatomic) NSArray *supportedNumRedundantPayload; @property (nonatomic) BOOL sendActiveVoiceOnly; @property (nonatomic, getter=isCurrentDTXEnabled) BOOL currentDTXEnable; @property (nonatomic) unsigned char mediaControlInfoVersion; @property (nonatomic) BOOL useWiFiTiers; @property BOOL periodicReportingEnabled; @property (readonly) unsigned long long hash; @property (readonly) Class superclass; @property (readonly, copy) NSString *description; @property (readonly, copy) NSString *debugDescription; - (id)initWithConfig:(id)a0; - (void)dealloc; - (void)start; - (void)stop; - (void)handleCodecModeChangeEvent:(struct _VCAudioCodecModeChangeEvent { int x0; int x1; int x2; unsigned int x3; struct EVSRFParams { unsigned int x0; unsigned int x1; } x4; })a0 didUpdateBandwidth:(BOOL *)a1 didUpdateBitrate:(BOOL *)a2; - (void)currentPayloadUsed:(int)a0 payloadUsed:(id *)a1; - (void)initAudioValues; - (BOOL)allocateLastInputSampleBuffer:(unsigned int)a0; - (void)audioIssueDetectorCreateAndConfigure; - (void)audioIssueDetectorStopAndFinalize; - (BOOL)chooseAudioNetworkBitrate; - (void)gatherRealtimeStats:(struct __CFDictionary { } *)a0; - (void)handleActiveConnectionChange:(id)a0; - (void)handleActiveConnectionChangeDefault:(id)a0; - (void)handleActiveConnectionChangeMultiway:(id)a0; - (BOOL)isCodecModeChangeRequestValid:(struct _VCAudioCodecModeChangeEvent { int x0; int x1; int x2; unsigned int x3; struct EVSRFParams { unsigned int x0; unsigned int x1; } x4; })a0; - (void)logTierInfo:(int)a0; - (unsigned int)maximumSamplesPerFrame; - (float)nextAudioInterval:(int)a0; - (id)packetsPerBundle; - (void)processNWConnectionNotification:(struct ifnet_interface_advisory { union { struct { unsigned char x0; unsigned char x1; unsigned short x2; int x3; unsigned long long x4; unsigned long long x5; unsigned long long x6; unsigned long long x7; unsigned int x8; unsigned int x9; unsigned int x10; unsigned char x11; unsigned char x12; unsigned short x13; unsigned short x14; unsigned char x15; unsigned char x16; unsigned char x17; unsigned char x18; } x0; struct { struct ifnet_interface_advisory_header { unsigned char x0; unsigned char x1; unsigned char x2; unsigned char x3; } x0; struct ifnet_interface_advisory_capacity { int x0; unsigned long long x1; unsigned long long x2; unsigned long long x3; unsigned long long x4; unsigned int x5; unsigned int x6; unsigned int x7; } x1; union { struct ifnet_interface_advisory_wifi_context { unsigned char x0; unsigned char x1; unsigned short x2; unsigned short x3; unsigned char x4; unsigned char x5; unsigned char x6; unsigned char x7; unsigned char x8; unsigned short x9; unsigned int x10[6]; } x0; struct ifnet_interface_advisory_cell_context { unsigned char x0; short x1; short x2; char x3; unsigned char x4; unsigned char x5; unsigned char x6; unsigned char x7; unsigned short x8; unsigned short x9; unsigned char x10; unsigned char x11; } x1; } x2; } x1; } x0; } *)a0; - (void)pushAudioSamples:(struct opaqueVCAudioBufferList { } *)a0; - (void)redundancyController:(id)a0 redundancyIntervalDidChange:(double)a1; - (void)redundancyController:(id)a0 redundancyPercentageDidChange:(unsigned int)a1; - (unsigned int)redundancyControllerModeForOperatingMode:(int)a0 isRedEnabled:(BOOL)a1; - (void)registerReportingTask; - (void)removeUnusedAudioPayloads; - (void)reportRTCPPacket; - (void)reportRedundancyConfigChange; - (BOOL)sendCodecModeChangeEvent:(struct _VCAudioCodecModeChangeEvent { int x0; int x1; int x2; unsigned int x3; struct EVSRFParams { unsigned int x0; unsigned int x1; } x4; })a0; - (unsigned int)sentAudioBytesShort; - (void)setCellTech:(int)a0 remoteCellular:(int)a1 isIPV6:(int)a2 audioCap:(unsigned int)a3; - (void)setRedNumPayloads:(int)a0 withMaxDelay:(int)a1 shouldResetHistory:(BOOL)a2; - (void)setStreamIDs:(id)a0; - (BOOL)setupAudio:(id *)a0; - (BOOL)setupAudioEncoders; - (void)setupAudioHeaderSize; - (BOOL)setupAudioTierPicker; - (BOOL)setupEncoderBuffer; - (BOOL)shouldUpdateCodecBandwidth:(struct _VCAudioCodecModeChangeEvent { int x0; int x1; int x2; unsigned int x3; struct EVSRFParams { unsigned int x0; unsigned int x1; } x4; })a0; - (BOOL)shouldUpdateCodecBitrate:(struct _VCAudioCodecModeChangeEvent { int x0; int x1; int x2; unsigned int x3; struct EVSRFParams { unsigned int x0; unsigned int x1; } x4; })a0; - (void)updateAudioTxBitrate; - (void)updateAudioTxRate; - (void)useAudioPayload:(id)a0 withBitrate:(unsigned int)a1; - (void)useAudioTier:(id)a0; @end