Skip to Content
ReferenceGlossary

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.