Glossary
Terms as Viora uses them.
ADM - Audio Device Module
libwebrtc’s abstraction over the platform audio capture/playback. Viora uses
JavaAudioDeviceModule, configured per mic mode
with a capture source and hardware AEC/NS flags. It can only change with a
factory rebuild, which is why mic-mode changes across
hardware groups
are deferred to the next call.
APM - Audio Processing Module
libwebrtc’s software audio DSP: echo cancellation, noise suppression, automatic
gain control, high-pass filter. Configured via MediaConstraints on the
AudioSource (googEchoCancellation, googNoiseSuppression, …). Can swap
mid-call.
BWE - Bandwidth Estimation
WebRTC’s continuous estimate of how much bandwidth the path can carry, driving the encoder’s target bitrate. Starts low and ramps; Viora seeds it for strict HEVC encoders.
DTLS-SRTP
The encryption for WebRTC media. A DTLS handshake over the peer connection establishes keys; SRTP (Secure RTP) encrypts every media packet with them. This is the “the packets are encrypted end to end” property - there is no server-side decrypt point in a mesh call.
FEC - Forward Error Correction
Redundant data that lets a receiver reconstruct a lost packet without a
retransmit. Viora enables Opus in-band FEC (useinbandfec=1) - audio
survives moderate packet loss.
Glare
Both peers creating an SDP offer simultaneously, producing incompatible states. Viora avoids it with the join-order offerer rule.
ICE - Interactive Connectivity Establishment
The process of finding a working path between two peers behind NATs. Each side
gathers candidates (local, STUN-reflexive, relay) and they probe pairs until
one works. GATHER_CONTINUALLY keeps gathering so a network change surfaces new
candidates without a full restart.
ICE restart
Re-running ICE with fresh credentials after a route dies. Viora does this
offerer-only on DISCONNECTED/FAILED, latched so a burst of transitions
produces one restart. See resilience.
Mesh
A topology where every participant connects directly to every other participant
- N·(N−1)/2 connections, no server in the media path. Viora is a 2-peer mesh today; multi-party extends it to ≤5.
MediaProjection
Android’s screen-capture API. Requires user consent per session and a
mediaProjection-typed foreground service (API 14+). Feeds
ScreenCapturerAndroid for screen sharing.
SDP - Session Description Protocol
The text blob describing a peer’s media capabilities (codecs, formats,
transport). Exchanged as offer and answer. Viora
rewrites parts of it before
setLocalDescription to raise the H.265 level and tune Opus.
SDP munging
Editing the SDP string between createOffer/createAnswer and
setLocalDescription to change negotiation behaviour the API doesn’t expose
directly. Viora’s raiseH265Level and tuneOpus.
SFU - Selective Forwarding Unit
A media server that receives every participant’s stream and forwards a selection to each other participant. What large-scale video products use, and an explicit non-goal for Viora - it would put a server back in the media path.
Screencast source
A VideoSource created with isScreencast = true. It tells WebRTC to pin
resolution and let framerate give under load - correct for a screen, wrong for
a camera. Viora’s camera source is isScreencast = false; see
video capture.
STUN - Session Traversal Utilities for NAT
A lightweight server that tells a peer its public IP:port as seen from outside its NAT. Viora uses Google’s public STUN servers. It is not a relay - it only helps discover candidates.
TURN - Traversal Using Relays around NAT
A relay server that forwards media when a direct path can’t be found (symmetric NAT on both ends). Viora has no TURN - a roadmap item. A TURN relay forwards encrypted SRTP it can’t read, so it wouldn’t break the privacy story.
Unified Plan
The modern SDP format for multiple media streams (one m= section per track).
Viora sets sdpSemantics = UNIFIED_PLAN.