@phenixrts/sdk
Version:
JavaScript SDK
49 lines (48 loc) • 2.5 kB
TypeScript
import IDisposable from '../../lang/IDisposable';
import { Millisecond, BitsPerSecond } from '../../units/Units';
import ReadOnlySubject from '../../rx/ReadOnlySubject';
import Dimension from '../../video/Dimension';
import IPeerConnection from '../../rtc/IPeerConnection';
import { IRtcMonitorStatistic } from '../../rtc/RtcConnectionMonitor';
import { EncodedEdgeToken } from '../../edgeAuth/EncodedEdgeToken';
import EndPoint, { IStream } from '../discovery/EndPoint';
import { DecodedFrameTimingInformation, RenderedFrameTimingInformation } from '../frameTiming/FrameTimingInformation';
import ChannelState from './ChannelState';
export interface IChannel extends IDisposable {
videoElement: HTMLVideoElement | null;
token: EncodedEdgeToken;
readonly exists: ReadOnlySubject<boolean | null>;
readonly tokenExpiring: ReadOnlySubject<boolean>;
readonly state: ReadOnlySubject<ChannelState>;
readonly authorized: ReadOnlySubject<boolean>;
readonly online: ReadOnlySubject<boolean>;
readonly loading: ReadOnlySubject<boolean>;
readonly playing: ReadOnlySubject<boolean>;
readonly standby: ReadOnlySubject<boolean>;
readonly stopped: ReadOnlySubject<boolean>;
readonly autoMuted: ReadOnlySubject<boolean>;
readonly autoPaused: ReadOnlySubject<boolean>;
readonly endPoint: ReadOnlySubject<EndPoint | null>;
readonly targetLag: ReadOnlySubject<Millisecond>;
readonly lag: ReadOnlySubject<Millisecond | undefined>;
readonly resolution: ReadOnlySubject<Dimension>;
readonly failureCount: ReadOnlySubject<number>;
readonly streamId: string;
readonly stream: ReadOnlySubject<IStream | null>;
readonly bitrateLimit: BitsPerSecond;
readonly peerConnection: ReadOnlySubject<IPeerConnection | null>;
readonly mediaStream: ReadOnlySubject<MediaStream | null>;
readonly rtcStatistics: ReadOnlySubject<IRtcMonitorStatistic | null>;
readonly isFrameTimingInformationEnabled: ReadOnlySubject<boolean>;
readonly decodedFrameTimingInformation: ReadOnlySubject<DecodedFrameTimingInformation | null>;
readonly renderedFrameTimingInformation: ReadOnlySubject<RenderedFrameTimingInformation | null>;
play(): Promise<void>;
resume(): Promise<void>;
stop(reason: string): Promise<void>;
mute(): void;
unmute(): void;
setBitrateLimit(bitrateLimit: BitsPerSecond): void;
clearBitrateLimit(): void;
updateTargetLag(lag: Millisecond): void;
getUri(token: EncodedEdgeToken): URL;
}