foxconn-yumeeting-sdk-js
Version:
A js sdk for ion yumeeting
70 lines (69 loc) • 2.29 kB
TypeScript
import { Signal } from './signal';
import { LocalStream, RemoteStream } from './stream';
export interface Sender {
stream: MediaStream;
transceivers: {
[kind in 'video' | 'audio']: RTCRtpTransceiver;
};
}
export interface Configuration extends RTCConfiguration {
codec: 'vp8' | 'vp9' | 'h264';
}
export interface Trickle {
candidate: RTCIceCandidateInit;
target: Role;
}
export interface ActiveLayer {
streamId: string;
activeLayer: string;
availableLayers: string[];
}
export interface AudioSDP {
DTX: number;
SampleRate: number;
}
declare enum Role {
pub = 0,
sub = 1
}
declare type Transports<T extends string | symbol | number, U> = {
[K in T]: U;
};
export declare class Transport {
api?: RTCDataChannel;
signal: Signal;
pc: RTCPeerConnection;
candidates: RTCIceCandidateInit[];
onrestartice?: () => void;
constructor(role: Role, signal: Signal, config: RTCConfiguration);
}
export default class Client {
transports?: Transports<Role, Transport>;
private config;
private signal;
audioSDP: AudioSDP;
opusRed: boolean;
subStream: boolean;
ontrack?: (track: MediaStreamTrack, stream: RemoteStream) => void;
ondatachannel?: (ev: RTCDataChannelEvent) => void;
onspeaker?: (ev: string[]) => void;
onerrnegotiate?: (role: Role, err: Error, offer?: RTCSessionDescriptionInit, answer?: RTCSessionDescriptionInit) => void;
onactivelayer?: (al: ActiveLayer) => void;
onrestartice?: () => void;
constructor(signal: Signal, config?: Configuration, audioSDP?: AudioSDP, opusRed?: boolean, subStream?: boolean);
join(sid: string, uid: string): Promise<void>;
leave(): void;
getPubStats(selector?: MediaStreamTrack): Promise<RTCStatsReport>;
getSubStats(selector?: MediaStreamTrack): Promise<RTCStatsReport>;
getPubConnection(): RTCPeerConnection;
getSubConnection(): RTCPeerConnection;
publish(stream: LocalStream, motion: boolean): void;
createDataChannel(label: string): RTCDataChannel;
close(): void;
private trickle;
private negotiate;
private onNegotiationNeeded;
private processChannelMessage;
private audioSdpReplace;
}
export {};