UNPKG

matrix-js-sdk

Version:
103 lines 3.34 kB
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