@class AVCStatisticsCollector, NSString, VCRateControlMediaController, VCRateSharingGroup, AVCRateControlFeedbackController, AVCBasebandCongestionDetector, VCRateControlServerBag, NSObject, VCNWConnectionCongestionDetector; @protocol OS_nw_activity, VCRateControlAlgorithm, OS_dispatch_queue, AVCRateControllerDelegate; @interface AVCRateController : NSObject <VCRateSharingClient> { struct OpaqueFigCFWeakReference { } *_rateControllerDelegateWeak; id<AVCRateControllerDelegate> _rateControllerDelegate; struct tagVCRateControlAlgorithmConfig { unsigned int serverBagProfileNumber; unsigned int *tierBitrates; int initialTierIndex; int maxTierIndex; int minTierIndex; int softMaxTierIndex[2]; int lowestNonEmergencyTierIndex; int lowestNonEmergencyTierIndexWiFi; int lowestEffectiveBWETierIndex; int lowestTierIndexReactToNoServerActivity; int rampUpTierNumber; int rampDownTierNumber; int rampUpAdditionalTierAtInitial; int rampDownAdditionalTierAtInitial; int rampDownBurstyLossThreshold; int lowestTierForBurstyLossRampDown; int lowestTierToDisableRateLimited; double rampDownNOWRDThreshold; double rampDownNOWRDAccThreshold; double rampDownAggressiveNOWRDThreshold; double rampDownAggressiveNOWRDAccThreshold; double rampDownConstantOWRDDuration; double rampDownOvershootDuration; double rampDownOvershootNextTierRatio; double rampUpFrozenDuration; double rampUpSettleDuration; double rampUpOWRDThreshold; double rampUpNOWRDThreshold; double rampUpNOWRDAccThreshold; double rampUpOverBandwidthCalmDuration; double rampUpBlockedTimeout; int rampUpOverBandwidthTierNumber; int rampDownLossEventThreshold; int rampDownLossEventBadTrendThreshold; double rampDownLossEventThresholdRatio; double rampDownLossEventWindowDuration; double rampDownLossEventNOWRDThreshold; double rampUpFrozenPLRThreshold; double rampUpRateLimitedRatio; double unstableRateLimitedDuration; double congestionWaitDuration; double owrdWindowDuration; double owrdShortWindowDuration; double minimumNOWRDTimeDifference; double owrdInitialRampUpReadyDuration; unsigned int owrdHistorySize; unsigned int owrdMininumHistorySize; unsigned int fastRampDownBitrateRange; unsigned int fastRampUpBitrateRange; unsigned int consecutiveRampDownThresholdForCongestion; BOOL receivedBandwidthEstimationEnabled; BOOL basebandAdaptationEnabled; BOOL rateLimitedEnabled; BOOL randomRampUpFrozenDurationEnabled; BOOL oscillationAvoidanceEnabled; BOOL fastRampUpEnabled; BOOL blockRampUpInSaturatedNetworkEnabled; BOOL blockRampUpInBluetoothCoexEnabled; BOOL wifiEmergencyTiersEnabled; BOOL burstyTrafficEnabled; BOOL lowLatencyWANEnabled; BOOL rampDownToActualSendBitrate; int rampDownToActualSendBitrateMinTier; BOOL rampDownSuppressionEnabled; double rampDownSuppressionMinRTT; double rampDownSuppressionFactor; int fastRampUpHighestTier; double fastRampUpRTTRatio; int fastRampUpTierGap; double fastRampUpNetworkStableDuration; double networkSaturatedRTTToMinRTTRatio; double networkSaturatedOWRDToMinRTTRatio; int networkSaturatedPersistFeedbackNumber; double networkSaturatedRTTDecreasingThreshold; int oscillationAvoidanceTierChangeThreshold; int oscillationAvoidanceTiersHitThreshold; double oscillationAvoidanceDurationRatio; double oscillationAvoidanceDurationRatioAggressive; int stabilizationScheme; double rampDownNBDCDThreshold; double rampDownAggressiveNBDCDThreshold; double rampDownNormalizedQueuingDelayThreshold; double rampDownMediumQueuingDelayThreshold; double rampDownHighQueuingDelayThreshold; double rampDownEmergencyTierCoolDownTime; double rampDownWiFiEmergencyTierCoolDownTime; double rampUpNBDCDThreshold; double rampUpQueuingDelayThreshold; double rampUpNBDCDCoolDownTime; double rampUpAudioFractionCoolDownTime; double basebandRATSwitchCoolDownTime; double basebandAdaptationCrossTrafficRatio; double rampUpNetworkUnstableCoolDownTime; double autoResumeDurationAfterPaused; double pauseOffChannelHighRatio; double unpauseOffChannelLowRatio; BOOL oscillationDetectionEnabled; double oscillationCoolDownTime; int oscillationDeviationTierNumber; int oscillationDeviationCountThreshold; BOOL preventBasebandRampDownCloseToKeyFrame; int basebandRampDownSlowDownFactor; double networkUnstableRTTThreshold; double networkUnstablePLRThreshold; double packetLossRateThresholdInitial; double packetLossRateThresholdMin; double packetLossRateThresholdMax; double packetLossRateThresholdTarget; unsigned int rampUpUplinkBLERThreshold; unsigned int rampDownUplinkBLERThreshold; double rampUpUplinkBLERDuration; double rampDownUplinkBLERDuration; double rampDownECNCERatioLow; double rampDownECNCERatioMedium; double rampDownECNCERatioHigh; unsigned int rampDownECNBitrateHigh; unsigned int rampDownECNBitrateMedium; unsigned int rampDownECNBitrateLow; double ceRatioDurationToRTTFactor; double ceRatioDurationMin; double ceRatioDurationMax; int smartBrakeStrategy; } _algorithmConfigCache; BOOL _didCacheAlgorithmConfig; unsigned int _actualBitrate; unsigned int _wifiTxMediaBitrate; unsigned int _wifiNonAVCTxMediaBitrate; unsigned int _initialBitrate; double _initialRampUpStartTime; BOOL _initialRampUpDeltaReported; unsigned int _rateChangeCounter; unsigned int _roundTripTimeMilliseconds; double _packetLossPercentage; double _packetLossPercentageVideo; double _packetLossPercentageAudio; double _sumPLR; double _sumPLRVideo; unsigned int _sumOverUtilizedBandwidth; unsigned int _sumUnderUtilizedBandwidth; unsigned int _sumOverShootSendBitrate; unsigned int _sumUnderShootSendBitrate; unsigned int _sumWorstRecentRTTInMillisecond; unsigned int _sumWorstRecentBurstLoss; unsigned int _countPeriodicTaskUpdate; unsigned int _totalPacketsReceived; unsigned int _totalPacketsSent; unsigned int _totalBytesSent; unsigned int _totalBytesReceived; unsigned int _burstPacketLoss; unsigned int _owrd; BOOL _isNetworkCongested; void *_logDump; void *_logFeedbackDump; void *_logBasebandDump; void *_logNWDump; void *_logBWEDump; BOOL _isRateControlDumpFileEnabled; BOOL _isBWEDumpFileEnabled; NSString *_dumpID; BOOL _isPeriodicLoggingEnabled; BOOL _isBasebandEnabled; BOOL _isForSimulation; BOOL _isUplink; BOOL _useExternalThread; BOOL _didConfigured; double _lastDefaultsReadTime; int _forcedTargetBitrate; int _forcedMaxBitrate; int _forcedTargetBitrateFromTestMonitor; int _forcedMaxBitrateFromTestMonitor; struct OpaqueFigCFWeakReference { } *_reportingAgentWeak; struct opaqueRTCReporting { } *_reportingAgentStrong; int _reportingModuleID; unsigned int _lastReportFlushedVideoPacketCount; unsigned int _lastReportFlushedAudioPacketCount; double _lastTimeTargetBitrateOvershootRecorded; double _lastTimeUnexpectedLowTargetBitrateRecorded; double _lastTimeUnexpectedRampUpFrozenRecorded; unsigned int _lastRecordedTargetBitrate; unsigned int _lastReportedBandwidthEstimation; unsigned int _totalSuddenBandwidthDropCount; unsigned int _totalMBLRampDownCount; double _lastTimeSustainedHighUplinkPacketLossReported; double _lastTimeSustainedHighDownlinkPacketLossReported; double _lastTimeServerStatsActivityRecorded; BOOL _isNoServerStatsIdleActivityReported; unsigned int _remotePacketReceivedAudio; unsigned int _remotePacketReceivedVideo; unsigned int _remoteECT1ReceiveCount; unsigned int _remoteCEReceiveCount; VCRateControlServerBag *_serverBag; int _btNotificationHandlerIndex; NSObject<OS_nw_activity> *_parentNWActivity; NSObject<OS_nw_activity> *_noServerStatsUplinkNwActivity; NSObject<OS_nw_activity> *_noServerStatsDownlinkNwActivity; BOOL _useNWConnectionNotification; BOOL _useBTNotificationMonitor; BOOL _isRegisteredForRateSharing; struct os_unfair_lock_s { unsigned int _os_unfair_lock_opaque; } _registrationLock; struct _opaque_pthread_mutex_t { long long __sig; char __opaque[56]; } _mutex; VCRateSharingGroup *_sharingGroup; BOOL _isECNEnabled; BOOL _isCongestedForReport; BOOL _isNetworkForcingECN; unsigned int _lastReportedRateControlAlgorithmStatsIndex; NSObject<OS_dispatch_queue> *_reportingQueue; struct OpaqueFigCFWeakReferenceHolder { } *_weakSelf; id<VCRateControlAlgorithm> _rateControlAlgorithm; } @property (retain, nonatomic) VCRateControlMediaController *mediaController; @property (readonly, nonatomic) unsigned int targetBitrate; @property (readonly, nonatomic) struct AVCRateControlConfig { unsigned int mode; unsigned int localRadioAccessTechnology; unsigned int remoteRadioAccessTechnology; unsigned int maxBitrate; unsigned int minBitrate; unsigned int initialBitrate; BOOL isTrafficBursty; struct tagVCRateControlAlgorithmConfig *algorithmConfig; unsigned int featureFlags; } configuration; @property (nonatomic) unsigned int targetBitrateCap; @property (nonatomic) unsigned int estimatedBandwidthCap; @property (nonatomic) unsigned int expectedBitrate; @property (readonly) id reportingAgent; @property (readonly, nonatomic) BOOL isStarted; @property (readonly, nonatomic) unsigned int nwNotificationProcessed; @property (readonly, nonatomic) unsigned int maxTargetBitrate; @property (readonly, nonatomic) unsigned int minTargetBitrate; @property (readonly, nonatomic) struct tagVCRateControlAlgorithmConfig { unsigned int x0; unsigned int *x1; int x2; int x3; int x4; int x5[2]; int x6; int x7; int x8; int x9; int x10; int x11; int x12; int x13; int x14; int x15; int x16; double x17; double x18; double x19; double x20; double x21; double x22; double x23; double x24; double x25; double x26; double x27; double x28; double x29; double x30; int x31; int x32; int x33; double x34; double x35; double x36; double x37; double x38; double x39; double x40; double x41; double x42; double x43; double x44; unsigned int x45; unsigned int x46; unsigned int x47; unsigned int x48; unsigned int x49; BOOL x50; BOOL x51; BOOL x52; BOOL x53; BOOL x54; BOOL x55; BOOL x56; BOOL x57; BOOL x58; BOOL x59; BOOL x60; BOOL x61; int x62; BOOL x63; double x64; double x65; int x66; double x67; int x68; double x69; double x70; double x71; int x72; double x73; int x74; int x75; double x76; double x77; int x78; double x79; double x80; double x81; double x82; double x83; double x84; double x85; double x86; double x87; double x88; double x89; double x90; double x91; double x92; double x93; double x94; double x95; BOOL x96; double x97; int x98; int x99; BOOL x100; int x101; double x102; double x103; double x104; double x105; double x106; double x107; unsigned int x108; unsigned int x109; double x110; double x111; double x112; double x113; double x114; unsigned int x115; unsigned int x116; unsigned int x117; double x118; double x119; double x120; int x121; } algorithmConfig; @property (retain, nonatomic) AVCStatisticsCollector *statisticsCollector; @property (retain, nonatomic) AVCRateControlFeedbackController *feedbackController; @property (retain, nonatomic) AVCBasebandCongestionDetector *basebandCongestionDetector; @property (retain, nonatomic) VCNWConnectionCongestionDetector *nwConnectionCongestionDetector; @property (nonatomic, getter=isPaused) BOOL paused; @property (readonly, nonatomic) struct tagAVCRateControlExperimentConfig { int x0; int x1; unsigned int x2; } rateControlExperimentConfig; @property (readonly) unsigned long long hash; @property (readonly) Class superclass; @property (readonly, copy) NSString *description; @property (readonly, copy) NSString *debugDescription; - (void)configure:(struct AVCRateControlConfig { unsigned int x0; unsigned int x1; unsigned int x2; unsigned int x3; unsigned int x4; unsigned int x5; BOOL x6; struct tagVCRateControlAlgorithmConfig *x7; unsigned int x8; })a0; - (void)dealloc; - (BOOL)start; - (BOOL)stop; - (void)resetStatsForPeriodicTaskReport; - (void)accumulateStatsForPeriodicTaskUpdate; - (void)cleanupNwActivity; - (void)completeAndReleaseNwActivity:(id)a0 withReason:(int)a1; - (void)configureWithOperatingMode:(int)a0 isLocalCellular:(BOOL)a1 localCellTech:(int)a2 isRemoteCellular:(BOOL)a3 remoteCellTech:(int)a4 bitrateCapKbps:(unsigned int)a5 isTrafficBursty:(BOOL)a6 featureFlags:(unsigned int)a7; - (void)createBasebandLogDumpFile; - (void)createNWConnectionLogDumpFile; - (void)deregisterForRateSharing; - (void)deregisterPeriodicTask; - (void)getRealTimeStats:(struct __CFDictionary { } *)a0; - (void)getRealTimeStatsForLowLatency:(struct __CFDictionary { } *)a0; - (void)getRealTimeStatsForServerBasedRxOnly:(struct __CFDictionary { } *)a0; - (void)getRealTimeStatsForServerBasedTxOnly:(struct __CFDictionary { } *)a0; - (id)initWithDelegate:(id)a0 dumpID:(id)a1 isUplink:(BOOL)a2 reportingAgent:(id)a3; - (id)initWithDelegate:(id)a0 params:(const struct tagVCRateControlParams { id x0; BOOL x1; BOOL x2; id x3; id x4; BOOL x5; id x6; BOOL x7; id x8; } *)a1; - (unsigned int)loadDefaultVCRCFeatureFlags:(unsigned int)a0; - (void)periodicTask:(void *)a0; - (void)printRateControllerHealthPrint; - (unsigned int)radioAccessTechnologyFromAVConferenceCellTech:(int)a0 isCellular:(BOOL)a1; - (unsigned int)rateControlModeFromAVConferenceOperatingMode:(int)a0; - (void)registerForRateSharing:(unsigned int)a0; - (void)registerPeriodicTask; - (void)releaseAllLogDumpFiles; - (void)releaseLogDumpFile:(void **)a0; - (void)setBtNotificationMonitor; - (void)setShareProfile:(id)a0; @end