import VideoStreamIdSet from '../videostreamidset/VideoStreamIdSet'; import VideoStreamIndex from '../videostreamindex/VideoStreamIndex'; /** * [[TransceiverController]] provides an interface for managing transceivers * associated with peer connection. */ export default interface TransceiverController { /** * Sets the peer connection. */ setPeer(peer: RTCPeerConnection): void; /** * Resets the transceiver controller states. */ reset(): void; /** * Indicates whether the transceiver is used. */ useTransceivers(): boolean; /** * Indicates if there is a video input attached */ hasVideoInput(): boolean; /** * Returns whether the track is a video track. */ trackIsVideoInput(track: MediaStreamTrack): boolean; /** * Creates audio and video transceivers. */ setupLocalTransceivers(): void; /** * Sets the audio track. */ setAudioInput(track: MediaStreamTrack | null): Promise; /** * Replaces [[MediaStreamTrack]] on audio transceiver of sendrecv direction. */ replaceAudioTrack(track: MediaStreamTrack): Promise; /** * Sets the video track. */ setVideoInput(track: MediaStreamTrack | null): Promise; /** * Updates video transceivers. */ updateVideoTransceivers(videoStreamIndex: VideoStreamIndex, videosToReceive: VideoStreamIdSet): number[]; /** * Get the associated MID for a given stream ID, either set via `updateVideoTranceivers` * or overriden through `setStreamIdForMid`. */ getMidForStreamId?(streamId: number): string | undefined; /** * Override or set an internal mapping of stream ID to MID. */ setStreamIdForMid?(mid: string, streamId: number): void; /** * Sets video sending bitrate in Kilo-bit-per-second */ setVideoSendingBitrateKbps(bitrateKbps: number): void; /** * Returns the [[RTCRtpTransceiver]] for audio */ localAudioTransceiver(): RTCRtpTransceiver; /** * Returns the [[RTCRtpTransceiver]] for local camera */ localVideoTransceiver(): RTCRtpTransceiver; /** * Set [[RTCRtpEncodingParameters]] on the sender of transceiver. * This method should be called whenever the sender's encoding parameters of the local video transceiver need to * be updated. * For example, the default NScaleVideoUplinkBandwidthPolicy calls this method whenever a video is on/off or the * active speaker changes. * This method assumes that the sender of the local video transceiver is available and the input parameters should * not be empty. * The encoding parameters for sender should be retrieved using sender.getParameters and updated using * sender.setParameters method. * @param {Map} params - The encoding parameters. If you have multiple encoding * parameters for different video layers, the key should be the rid corresponding to the RTCRtpEncodingParameters. */ setEncodingParameters(params: Map): void; }