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

Backend
The MatrixRTC functionality is handled via LiveKit.
Frontend
