import ExtendedBrowserBehavior from '../browserbehavior/ExtendedBrowserBehavior'; import Logger from '../logger/Logger'; import VideoCodecCapability from '../sdp/VideoCodecCapability'; import TransceiverController from '../transceivercontroller/TransceiverController'; import DefaultVideoAndEncodeParameter from '../videocaptureandencodeparameter/DefaultVideoCaptureAndEncodeParameter'; import VideoStreamIndex from '../videostreamindex/VideoStreamIndex'; import ConnectionMetrics from './ConnectionMetrics'; import VideoUplinkBandwidthPolicy from './VideoUplinkBandwidthPolicy'; /** NScaleVideoUplinkBandwidthPolicy implements capture and encode * parameters that are nearly equivalent to those chosen by the * traditional native clients, except for a modification to * maxBandwidthKbps and scaleResolutionDownBy described below. */ export default class NScaleVideoUplinkBandwidthPolicy implements VideoUplinkBandwidthPolicy { private selfAttendeeId; private scaleResolution; private logger; private browserBehavior; static readonly encodingMapKey = "video"; static readonly targetHeightArray: number[][]; static readonly videoSVCCodecNames: string[]; static readonly contentSVCCodecNames: string[]; private numberOfPublishedVideoSources; private optimalParameters; private parametersInEffect; private idealMaxBandwidthKbps; private hasBandwidthPriority; private encodingParamMap; private transceiverController; private enableHighResolutionFeature; private enableSVC; private isUsingSVCCodec; private scalabilityModePreferences; private currentScalabilityModeIndex; private numParticipants; constructor(selfAttendeeId: string, scaleResolution?: boolean, logger?: Logger | undefined, browserBehavior?: ExtendedBrowserBehavior | undefined); reset(): void; updateConnectionMetric(_metrics: ConnectionMetrics): void; chooseMediaTrackConstraints(): MediaTrackConstraints; chooseEncodingParameters(): Map; updateIndex(videoIndex: VideoStreamIndex): void; wantsResubscribe(): boolean; chooseCaptureAndEncodeParameters(): DefaultVideoAndEncodeParameter; private updateOptimalParameters; private captureWidth; private captureHeight; private captureFrameRate; maxBandwidthKbps(): number; setIdealMaxBandwidthKbps(idealMaxBandwidthKbps: number): void; setHasBandwidthPriority(hasBandwidthPriority: boolean): void; setTransceiverController(transceiverController: TransceiverController | undefined): void; setSVCEnabled(enable: boolean): void; setHighResolutionFeatureEnabled(enabled: boolean): void; updateTransceiverController(): Promise; private shouldUpdateEndcodingParameters; private calculateEncodingParameters; private getStreamCaptureSetting; private getNumberOfPublishedVideoSources; private isContentShare; wantsVideoDependencyDescriptorRtpHeaderExtension(): boolean; setMeetingSupportedVideoSendCodecs(meetingSupportedVideoSendCodecPreferences: VideoCodecCapability[] | undefined, videoSendCodecPreferences: VideoCodecCapability[]): void; degradeScalabilityMode(): boolean; }