JoinOptions
Optional parameters for joining a channel.
Example:
ChannelInfo
Channel info.UserInfo
User info.TrackInfo
Track description.Codec
Codec enum.VideoRotation
Video frame rotation, used bypushFrame(_:rotation:timestampNs:) and VideoFrame.
The raw value is the angle, using the same convention as the
rotation parameter of inputData on Android.
StreamVendor
Media streaming engine vendor.
The SDK automatically selects the engine based on
stream_vendor in the token / join response.
ConnectionState
DisconnectReason
Preset types
MicPreset
Common presets:.speech.music.musicStereo.musicHighQuality.musicHighQualityStereo
CameraPreset
Common presets:.h180p.h360p.h720p.h1080p
ScreenPreset
Common presets:.h720p.h1080p
ScreenAudioPreset
Common presets:.default
ScreenCaptureMode
iOS screen capture mode, passed tocreateLocalScreenTrack(mode:). Ignored on macOS (which always uses ScreenCaptureKit).
DeviceInfo
The unified device structure returned by the device manager.
Possible values of
DeviceKind:
audioInputaudioOutputvideoInput
On iOS,
getDevices(kind: .audioOutput) returns an empty array—the system doesn’t expose output device enumeration.
To control where output goes, use the audio route types below—see Audio routing.AudioRoute
iOS only. The current audio output route, read-only, for reporting, with five states.
Helper properties:
AudioRouteTarget
iOS only. Route targets you can switch to actively, with only two states.
It’s deliberately separate from
AudioRoute: iOS doesn’t provide the ability to switch to a specific Bluetooth / wired device; external devices are taken over by the system,
and the SDK can only control “built-in speaker or receiver”. asRoute maps back to AudioRoute (.earpiece → .receiver).
AudioRouteInfo
iOS only. A snapshot of a system audio port, for diagnostics / display, not a list to choose from.AudioCallState
iOS only. The system call state, from CallKit. The SDK uses it to decide when it can recover after an audio interruption.ConnectionQuality
Connection quality level, parsed from the reports sent by the server.
When comparing which level is worse, the order is
unknown < excellent < good < poor < lost.
QualitySample
A snapshot of quality values in one direction; a signal-strength icon / network panel can render directly from these fields.QualityReport
A complete quality report. The SDK emits one each time the server sends a report.QualityEvaluation
A simplified level evaluation snapshot, used bygetConnectionQuality() and the level-change event.
ConnectionQualityChange
ActiveSpeakerInfo / ActiveSpeakersSnapshot
speakers is the full list: the SDK has already merged the server’s incremental protocol and sorted it by level in descending order; when nobody is speaking, it’s an empty array.
LayerSwitchedInfo
For how to use the quality-related types above, see Call quality and active speakers.
ReceiveStreamStatus
The payload of a receive status change for one remote video, delivered by thechannel(_:didChangeReceiveStreamStatus:) callback.
It’s judged per track, looking only at whether this video is producing frames, and is unrelated to the quality level of the whole link—don’t use
ConnectionQualityChange in its place; see Events for details.
It corresponds to
engineChannel:onReceiveStreamStatusChange:trackId:status: in the older RTCEngineKit; timedOut has the same truth value as the old status (true means timed out), so you don’t need to invert it when migrating.