UNPKG

@100mslive/hms-video-store

Version:

@100mslive Core SDK which abstracts the complexities of webRTC while providing a reactive store for data management with a unidirectional data flow

63 lines (62 loc) 2.81 kB
import { HMSVideoTrack } from './HMSVideoTrack'; import { VideoTrackLayerUpdate } from '../../connection/channel-messages'; import { HMSPreferredSimulcastLayer, HMSSimulcastLayer, HMSSimulcastLayerDefinition } from '../../interfaces/simulcast-layers'; import { HMSRemoteStream } from '../streams'; export declare class HMSRemoteVideoTrack extends HMSVideoTrack { private _degraded; private _degradedAt; private _layerDefinitions; private history; private preferredLayer; private bizTrackId; private disableNoneLayerRequest; constructor(stream: HMSRemoteStream, track: MediaStreamTrack, source?: string, disableNoneLayerRequest?: boolean); setTrackId(trackId: string): void; get trackId(): string; get degraded(): boolean; get degradedAt(): Date | null; setEnabled(value: boolean): Promise<void>; setPreferredLayer(layer: HMSPreferredSimulcastLayer): Promise<void>; /** * @deprecated * @returns {HMSSimulcastLayer} */ getSimulcastLayer(): HMSSimulcastLayer; getLayer(): HMSSimulcastLayer; getPreferredLayer(): HMSPreferredSimulcastLayer; getPreferredLayerDefinition(): HMSSimulcastLayerDefinition | undefined; replaceTrack(track: HMSRemoteVideoTrack): void; addSink(videoElement: HTMLVideoElement, shouldSendVideoLayer?: boolean): Promise<void>; removeSink(videoElement: HTMLVideoElement, shouldSendVideoLayer?: boolean): Promise<void>; /** * Method to get available simulcast definitions for the track * @returns {HMSSimulcastLayerDefinition[]} */ getSimulcastDefinitions(): HMSSimulcastLayerDefinition[]; /** @internal */ setSimulcastDefinitons(definitions: HMSSimulcastLayerDefinition[]): void; /** * @internal * SFU will change track's layer(degrade or restore) and tell the sdk to update * it locally. * @returns {boolean} isDegraded - returns true if degraded * */ setLayerFromServer(layerUpdate: VideoTrackLayerUpdate): boolean; private getDegradationValue; private updateLayer; private pushInHistory; private requestLayer; /** * given the new layer, figure out if the update should be sent to server or not. * It won't be sent if the track is already on the targetLayer. If the track is * degraded though and the target layer is none, update will be sent. * If there are tracks degraded on a page and user paginates away to other page, * it's necessary to send the layer none message to SFU so it knows that the app * is no longer interested in the track and doesn't recover degraded tracks on non * visible pages. * * TODO: if track is degraded, send the update if target layer is lower than current layer * @private */ private shouldSendVideoLayer; }