Building blocks

Historically Elememnt-Call did implement an infrastructure, where all participants were fully meshed. That means all participants had a direct peer to each other. This structure does work quite well with a low number of call partners (e.g 1:1 sessions). Clearly this structure is totally inefficient and collapsing, as soon as the number of participants rises: The needed number of streams that have to be synchronized are increasing exponentionally.

Most commercial solutions overcome this bottleneck utilizing a MCU-structure: Each participant of the call is directly connected to the controlling MCU (the head).

MCU routing has disadvantages and shortcommings too.

  • You can’t assign different egress parameters from the MCU to individual participant streams
  • A single MCU can’t handle distributed structure

Since the nature of Matrix based communication makes use of a distributed infrasturcture, MatrixRTC need to handle this aspect. It is implemented with an SFU backend.

The following image visualize the differences inside the available voip routing structures

Backend

The MatrixRTC functionality is handled via LiveKit.

Frontend

Building blocks