Home / Technology

Technology

openvocs is written mostly in C and runs as a set of small services on Linux. The client is a web application in the browser.

Many-to-Many

In a control room, many people talk to many. Phone and radio were not built for that.

1 : 1PhoneTwo parties. Adding a third means hanging up and dialing again.
1 : nRadioOne party talks, everyone else waits. One channel per device.
n : mVoice LoopsEach position monitors several loops at once and talks on the one it needs. Several people can talk at the same time.

Architecture

Three parts, separated by task.

System library

Its own C library with an independent WebRTC gateway.

Media backend

Microservices for conferencing. Mixing runs on the server in isolated processes, with latency below 1 ms.

Command and control

Server for business logic, roles and loops. The parts exchange JSON events.

Services

What runs on the server

Each service is a systemd unit. Mixers scale through additional instances.

ov_mc_vocs
Business logic and web server
ov_mc_vad
Voice activity detection
ov_mc_ice_proxy
WebRTC and ICE endpoint for audio routing
ov_mc_mixer@
Mixer, scalable through instances
ov_mc.target
starts all services

Client and security

In the browser, encrypted

The client needs no installation. If the connection drops, it reconnects on its own.

Source code on GitHub

Client
HTML, CSS and JavaScript without a framework
Signaling
Secure WebSockets, stateless and therefore with automatic reconnects
Audio
WebRTC, encrypted with DTLS/SRTP
Delivery
Container (Docker, Podman) or .deb and .rpm package, air-gap capable
Source code
Apache-2.0