matrix-js-sdk
Version:
Matrix Client-Server SDK for Javascript
103 lines • 3.34 kB
TypeScript
import { SDPStreamMetadataPurpose } from "./callEventTypes";
import { MatrixClient } from "../client";
import { RoomMember } from "../models/room-member";
import { TypedEventEmitter } from "../models/typed-event-emitter";
export declare const SPEAKING_THRESHOLD = -60;
export interface ICallFeedOpts {
client: MatrixClient;
roomId: string;
userId: string;
stream: MediaStream;
purpose: SDPStreamMetadataPurpose;
/**
* Whether or not the remote SDPStreamMetadata says audio is muted
*/
audioMuted: boolean;
/**
* Whether or not the remote SDPStreamMetadata says video is muted
*/
videoMuted: boolean;
}
export declare enum CallFeedEvent {
NewStream = "new_stream",
MuteStateChanged = "mute_state_changed",
VolumeChanged = "volume_changed",
Speaking = "speaking"
}
declare type EventHandlerMap = {
[CallFeedEvent.NewStream]: (stream: MediaStream) => void;
[CallFeedEvent.MuteStateChanged]: (audioMuted: boolean, videoMuted: boolean) => void;
[CallFeedEvent.VolumeChanged]: (volume: number) => void;
[CallFeedEvent.Speaking]: (speaking: boolean) => void;
};
export declare class CallFeed extends TypedEventEmitter<CallFeedEvent, EventHandlerMap> {
stream: MediaStream;
userId: string;
purpose: SDPStreamMetadataPurpose;
speakingVolumeSamples: number[];
private client;
private roomId;
private audioMuted;
private videoMuted;
private measuringVolumeActivity;
private audioContext;
private analyser;
private frequencyBinCount;
private speakingThreshold;
private speaking;
private volumeLooperTimeout;
constructor(opts: ICallFeedOpts);
private get hasAudioTrack();
private updateStream;
private initVolumeMeasuring;
private onAddTrack;
/**
* Returns callRoom member
* @returns member of the callRoom
*/
getMember(): RoomMember;
/**
* Returns true if CallFeed is local, otherwise returns false
* @returns {boolean} is local?
*/
isLocal(): boolean;
/**
* Returns true if audio is muted or if there are no audio
* tracks, otherwise returns false
* @returns {boolean} is audio muted?
*/
isAudioMuted(): boolean;
/**
* Returns true video is muted or if there are no video
* tracks, otherwise returns false
* @returns {boolean} is video muted?
*/
isVideoMuted(): boolean;
isSpeaking(): boolean;
/**
* Replaces the current MediaStream with a new one.
* This method should be only used by MatrixCall.
* @param newStream new stream with which to replace the current one
*/
setNewStream(newStream: MediaStream): void;
/**
* Set feed's internal audio mute state
* @param muted is the feed's audio muted?
*/
setAudioMuted(muted: boolean): void;
/**
* Set feed's internal video mute state
* @param muted is the feed's video muted?
*/
setVideoMuted(muted: boolean): void;
/**
* Starts emitting volume_changed events where the emitter value is in decibels
* @param enabled emit volume changes
*/
measureVolumeActivity(enabled: boolean): void;
setSpeakingThreshold(threshold: number): void;
private volumeLooper;
dispose(): void;
}
export {};
//# sourceMappingURL=callFeed.d.ts.map