RemoteParticipant

data class RemoteParticipant(val cid: String, val displayName: String? = null, val peerId: String? = null, val audioEnabled: Boolean = true, val videoEnabled: Boolean, val cameraEnabled: Boolean = videoEnabled, val content: ParticipantContent? = null, val cameraReceiving: Boolean = false, val contentReceiving: Boolean = false, val supportsIndependentContentVideo: Boolean = false, val connectionState: SerenadaPeerConnectionState, val signalingStatus: ParticipantSignalingStatus = ParticipantSignalingStatus.ACTIVE, val presumedLost: Boolean = false, val audioLevel: Float = 0.0f)

Constructors

Link copied to clipboard
constructor(cid: String, displayName: String? = null, peerId: String? = null, audioEnabled: Boolean = true, videoEnabled: Boolean, cameraEnabled: Boolean = videoEnabled, content: ParticipantContent? = null, cameraReceiving: Boolean = false, contentReceiving: Boolean = false, supportsIndependentContentVideo: Boolean = false, connectionState: SerenadaPeerConnectionState, signalingStatus: ParticipantSignalingStatus = ParticipantSignalingStatus.ACTIVE, presumedLost: Boolean = false, audioLevel: Float = 0.0f)

Properties

Link copied to clipboard
val audioEnabled: Boolean = true
Link copied to clipboard
val audioLevel: Float = 0.0f

Smoothed voice activity level (0..1) for this peer's inbound audio. Updated at ~10 Hz while the call is active; intended to drive UI activity indicators. Always 0 when audioEnabled is false.

Link copied to clipboard

Camera video specifically. In the current (flag-off) build this mirrors videoEnabled; in independent content mode videoEnabled is also kept as the camera-specific compatibility signal while content carries screen share state.

Link copied to clipboard

Per-role inbound media liveness, sampled from this peer's inbound RTP on the media-liveness cadence. cameraReceiving is true while the peer's CAMERA video bytes are advancing; contentReceiving is true while its CONTENT (screen share) video bytes are advancing. Each is only meaningful when that role's track is expected/active: derive a content stall as content?.active == true && !contentReceiving (and the camera analog from cameraEnabled). The SDK exposes the liveness primitive, not a pre-computed "stalled" flag, so consumers compose it with the expected state and read the peer identity from cid.

Link copied to clipboard
val cid: String
Link copied to clipboard

Content (screen share) presentation state, sourced from the peer's content_state. Null when the peer is not sharing content.

Link copied to clipboard
Link copied to clipboard
val displayName: String? = null
Link copied to clipboard
val peerId: String? = null

Host-supplied stable identity passed to SerenadaCore.join's peerId. Distinct from cid (per-call, server-issued). Surfaced for the call UI to look up avatars or correlate to host-side records.

Link copied to clipboard
val presumedLost: Boolean = false

true when this peer has been suspended longer than WebRtcResilienceConstants.PEER_SUSPENDED_UI_TIMEOUT_MS and the SDK has flipped its UI presentation to "presumed lost." The peer connection is intentionally left open so media can resume immediately if the peer reattaches; this flag is purely a UI hint that call shells can use to move the participant out of the active grid or show a "connection lost" badge. Cleared when the peer transitions back to ParticipantSignalingStatus.ACTIVE.

Link copied to clipboard

Whether this peer advertised independent content video at join (capabilities.independentContentVideo). Defaults to false when absent.

Link copied to clipboard