Class MatrixCall

Typed Event Emitter class which can act as a Base Model for all our model and communication events. This makes it much easier for us to distinguish between events, as we now need to properly type this, so that our events are not stringly-based and prone to silly typos.

Hierarchy

Constructors

Properties

Accessors

Methods

addBufferedIceCandidates addIceCandidates addListener answer answerWithCallFeeds callHasEnded checkForErrorListener chooseOpponent collectCallStats createAnswer createDataChannel createOffer createPeerConnection deleteAllFeeds deleteFeed deleteFeedByStream discardDuplicateCandidates emit eventNames getCurrentCallStats getFeedByStreamId getFeeds getLocalFeeds getLocalOfferFailed getLocalSDPStreamMetadata getOpponentDeviceId getOpponentMember getOpponentSessionId getRemoteAssertedIdentity getRemoteFeeds getRidOfRTXCodecs getUserMediaFailed gotCallFeedsForAnswer gotCallFeedsForInvite gotLocalIceCandidate gotLocalOffer hangup initOpponentCrypto initStats initWithHangup initWithInvite isLocalOnHold isLocalVideoMuted isMicrophoneMuted isRemoteOnHold isScreensharing listenerCount listeners mungeSdp noIncomingFeeds off on onAnswerReceived onAnsweredElsewhere onAssertedIdentityReceived onDataChannel onHangupReceived onIceConnectionStateChanged onIceGatheringStateChange onNegotiateReceived onNegotiationNeeded onRejectReceived onRemoteIceCandidatesReceived onSDPStreamMetadataChangedReceived onSelectAnswerReceived onSignallingStateChanged onTrack once opponentCanBeTransferred opponentSupportsDTMF opponentSupportsSDPStreamMetadata partyIdMatches placeCall placeCallWithCallFeeds placeVideoCall placeVoiceCall prependListener prependOnceListener pushLocalFeed pushNewLocalFeed pushRemoteFeed pushRemoteFeedWithoutMetadata queueCandidate queueGotCallFeedsForAnswer queueGotLocalOffer rawListeners reject removeAllListeners removeListener removeLocalFeed replacedBy sendAnswer sendCandidateQueue sendDtmfDigit sendMetadataUpdate sendVoipEvent setLocalVideoMuted setMicrophoneMuted setRemoteOnHold setScreensharingEnabled setScreensharingEnabledWithoutMetadataSupport shouldAnswerWithMediaType stopAllMedia terminate transfer transferToCall updateLocalUsermediaStream updateMuteStatus updateRemoteSDPStreamMetadata upgradeCall wrappedGotLocalOffer

Constructors

Properties

_state: CallState = CallState.Fledgling
callId: string
callLengthInterval?: Timer
callStartTime?: number
callStatsAtEnd?: any[]
candidateSendQueue: RTCIceCandidate[] = []
candidateSendTries: number = 0
candidatesEnded: boolean = false
client: MatrixClient
direction?: CallDirection
feeds: CallFeed[] = []
forceTURN?: boolean
groupCallId?: string
hangupParty?: CallParty
hangupReason?: string
iceDisconnectedTimeout?: Timeout
ignoreOffer: boolean = false
inviteOrAnswerSent: boolean = false
inviteTimeout?: Timeout
invitee?: string
isOnlyDataChannelAllowed: boolean
isPtt: boolean = false
makingOffer: boolean = false
opponentCaps?: CallCapabilities
opponentDeviceId?: string
opponentDeviceInfo?: DeviceInfo
opponentMember?: RoomMember
opponentPartyId: undefined | null | string
opponentSessionId?: string
opponentVersion?: string | number
ourPartyId: string
peerConn?: RTCPeerConnection
remoteAssertedIdentity?: AssertedIdentity
remoteCandidateBuffer: Map<string, RTCIceCandidate[]> = ...
remoteOnHold: boolean = false
remoteSDPStreamMetadata?: SDPStreamMetadata
removeTrackListeners: Map<MediaStream, (() => void)> = ...
responsePromiseChain?: Promise<void>
roomId: string
stats: undefined | GroupCallStats
stopVideoTrackTimer?: Timeout
successor?: MatrixCall
toDeviceSeq: number = 0
transceivers: Map<string, RTCRtpTransceiver> = ...
turnServers: TurnServer[]
waitForLocalAVStream: boolean = false

Accessors

  • get localScreensharingStream(): undefined | MediaStream
  • Returns undefined | MediaStream

  • get localUsermediaStream(): undefined | MediaStream
  • Returns undefined | MediaStream

  • get remoteScreensharingStream(): undefined | MediaStream
  • Returns undefined | MediaStream

  • get remoteUsermediaStream(): undefined | MediaStream
  • Returns undefined | MediaStream

Methods

  • Parameters

    • candidates: RTCIceCandidate[]

    Returns Promise<void>

  • Answer a call.

    Parameters

    • Optional audio: boolean
    • Optional video: boolean

    Returns Promise<void>

  • Returns Promise<undefined | any[]>

  • Returns Promise<RTCSessionDescriptionInit>

  • Create a datachannel using this call's peer connection.

    Parameters

    • label: string

      A human readable label for this datachannel

    • options: undefined | RTCDataChannelInit

      An object providing configuration options for the data channel.

    Returns RTCDataChannel

  • Returns Promise<RTCSessionDescriptionInit>

  • Parameters

    • stream: MediaStream

    Returns void

  • Returns Promise<undefined | any[]>

  • This method removes all video/rtx codecs from screensharing video transceivers. This is necessary since they can cause problems. Without this the following steps should produce an error: Chromium calls Firefox Firefox answers Firefox starts screen-sharing Chromium starts screen-sharing Call crashes for Chromium with: [96685:23:0518/162603.933321:ERROR:webrtc_video_engine.cc(3296)] RTX codec (PT=97) mapped to PT=96 which is not in the codec list. [96685:23:0518/162603.933377:ERROR:webrtc_video_engine.cc(1171)] GetChangedRecvParameters called without any video codecs. [96685:23:0518/162603.933430:ERROR:sdp_offer_answer.cc(4302)] Failed to set local video description recv parameters for m-section with mid='2'. (INVALID_PARAMETER)

    Returns void

  • Parameters

    • callFeeds: CallFeed[]
    • requestScreenshareFeed: boolean = false

    Returns void

  • Internal

    Parameters

    • event: RTCPeerConnectionIceEvent

    Returns void

  • Hangup a call.

    Parameters

    • reason: CallErrorCode

      The reason why the call is being hung up.

    • suppressEvent: boolean

      True to suppress emitting an event.

    Returns void

  • Configure this call from an invite event. Used by MatrixClient.

    Parameters

    Returns Promise<void>

  • Indicates whether we are 'on hold' to the remote party (ie. if true, they cannot hear us).

    Returns

    true if the other party has put us on hold

    Returns boolean

  • Check if local video is muted.

    If there are multiple video tracks, all of the tracks need to be muted for this to return true. This means if there are no video tracks, this will return true.

    Returns

    True if the local preview video is muted, else false (including if the call is not set up yet).

    Returns boolean

  • Check if the microphone is muted.

    If there are multiple audio tracks, all of the tracks need to be muted for this to return true. This means if there are no audio tracks, this will return true.

    Returns

    True if the mic is muted, else false (including if the call is not set up yet).

    Returns boolean

  • Returns

    true if we have put the party on the other side of the call on hold (that is, we are signalling to them that we are not listening)

    Returns boolean

  • If there is a screensharing stream returns true, otherwise returns false

    Returns

    is screensharing

    Returns boolean

  • Returns true if there are no incoming feeds, otherwise returns false

    Returns

    no incoming feeds

    Returns boolean

  • Parameters

    • ev: RTCDataChannelEvent

    Returns void

  • Parameters

    • event: Event

    Returns void

  • Returns true if this.remoteSDPStreamMetadata is defined, otherwise returns false

    Returns

    can screenshare

    Returns boolean

  • Place a call to this room.

    Throws

    if you have not specified a listener for 'error' events.

    Throws

    if have passed audio=false.

    Parameters

    • audio: boolean
    • video: boolean

    Returns Promise<void>

  • Place a call to this room with call feed.

    Throws

    if you have not specified a listener for 'error' events.

    Throws

    if have passed audio=false.

    Parameters

    • callFeeds: CallFeed[]

      to use

    • requestScreenshareFeed: boolean = false

    Returns Promise<void>

  • Place a video call to this room.

    Throws

    If you have not specified a listener for 'error' events.

    Returns Promise<void>

  • Place a voice call to this room.

    Throws

    If you have not specified a listener for 'error' events.

    Returns Promise<void>

  • Pushes supplied feed to the call

    Parameters

    • callFeed: CallFeed

      to push

    • addToPeerConnection: boolean = true

      whether to add the tracks to the peer connection

    Returns void

  • Parameters

    • stream: MediaStream

    Returns void

  • This method is used ONLY if the other client doesn't support sending SDPStreamMetadata

    Parameters

    • stream: MediaStream

    Returns void

  • Queue a candidate to be sent

    Parameters

    • content: null | RTCIceCandidate

      The candidate to queue up, or null if candidates have finished being generated and end-of-candidates should be signalled

    Returns void

  • Reject a call This used to be done by calling hangup, but is a separate method and protocol event as of MSC2746.

    Returns void

  • Removes local call feed from the call and its tracks from the peer connection

    Parameters

    Returns void

  • Replace this call with a new call, e.g. for glare resolution. Used by MatrixClient.

    Parameters

    Returns void

  • Sends a DTMF digit to the other party

    Parameters

    • digit: string

      The digit (nb. string - '#' and '*' are dtmf too)

    Returns void

  • Internal

    Parameters

    • eventType: string
    • content: object

    Returns Promise<void>

  • Set whether our outbound video should be muted or not.

    Returns

    the new mute state

    Parameters

    • muted: boolean

      True to mute the outbound video.

    Returns Promise<boolean>

  • Set whether the microphone should be muted or not.

    Returns

    the new mute state

    Parameters

    • muted: boolean

      True to mute the mic.

    Returns Promise<boolean>

  • Starts/stops screensharing

    Returns

    new screensharing state

    Parameters

    Returns Promise<boolean>

  • Starts/stops screensharing Should be used ONLY if the opponent doesn't support SDPStreamMetadata

    Returns

    new screensharing state

    Parameters

    Returns Promise<boolean>

  • Parameters

    • wantedValue: undefined | boolean
    • valueOfTheOtherSide: boolean
    • type: "audio" | "video"

    Returns boolean

  • Parameters

    • targetUserId: string

    Returns Promise<void>

  • Replaces/adds the tracks from the passed stream to the localUsermediaStream

    Parameters

    • stream: MediaStream

      to use a replacement for the local usermedia stream

    • forceAudio: boolean = false
    • forceVideo: boolean = false

    Returns Promise<void>

  • Adds an audio and/or video track - upgrades the call

    Parameters

    • audio: boolean

      should add an audio track

    • video: boolean

      should add an video track

    Returns Promise<void>

Generated using TypeDoc