Interface VideoUplinkBandwidthPolicy

A [[VideoUplinkBandwidthPolicy]] makes decisions about uplink video bandwidth usage and related camera capture parameters.

interface VideoUplinkBandwidthPolicy {
    chooseCaptureAndEncodeParameters(): VideoCaptureAndEncodeParameter;
    chooseEncodingParameters(): Map<string, RTCRtpEncodingParameters>;
    chooseMediaTrackConstraints(): MediaTrackConstraints;
    degradeScalabilityMode(): boolean;
    maxBandwidthKbps(): number;
    reset(): void;
    setHasBandwidthPriority(hasBandwidthPriority: boolean): void;
    setHighResolutionFeatureEnabled(enabled: boolean): void;
    setIdealMaxBandwidthKbps(maxBandwidthKbps: number): void;
    setMeetingSupportedVideoSendCodecs(
        meetingSupportedVideoSendCodecs: VideoCodecCapability[],
        videoSendCodecPreferences: VideoCodecCapability[],
    ): void;
    setSVCEnabled(enable: boolean): void;
    setTransceiverController(
        transceiverController: TransceiverController,
    ): void;
    updateConnectionMetric(metrics: ConnectionMetrics): void;
    updateIndex(videoIndex: VideoStreamIndex): void;
    updateTransceiverController(): void;
    wantsResubscribe(): boolean;
    wantsVideoDependencyDescriptorRtpHeaderExtension(): boolean;
}

Hierarchy (View Summary)

Implemented by

Methods

  • Set a reference to the current transceiver controller. The audio video controller should call this method to pass down a transceiver controller to the policy when the meeting starts and set it to undefined when the meeting ends. If a meeting is stopped and started repeatedly, this pair of calls will be repeated to match. All calls to updateTransceiverController will occur between this pair of calls. This method should not throw.

    Parameters

    Returns void

  • Update the transceiver controller that is set from setTransceiverController such as setEncodingParameters. Only used when unified plan is enabled but not available for simulcast for now. This method should be called when the policy needs to update the local video encoding parameters such as after setHasBandwidthPriority has been called. The default audio video controller calls this after a video is on/off or when an active speakers changes. This method should not throw.

    Returns void

  • Dependency descriptors can be used by the backend to designate spatial or temporal layers on a single encoding. Along with the video layers allocation exension this will result in the ability for remote attendees to subscribe to individual layers below the top.

    If the send transceiver is in a state where the layers allocation extension is not matching up with the dependency descriptor extension, or we simply don't want to allow for the seperation of spatial or temporal layers, we can remove the dependency descriptor from the SDP.

    Returns boolean