This MSC defines the modules with which the matrix real time system is build with.
This MSC defines the modules with which the matrix real time system is build.
The MatrixRTC specification is separated into different modules.
- The MatrixRTC room state that defines the state of the real time application.\
It is the source of truth for:
It is the source of truth for:
- Who is part of a session
- Who is connected via what technology/backend
- Metadata per device used by other participants to decide whether the streams
from this source are of interest / need to be subscribed.
from this source are of interest / need to be subscribed.
- The RTC backend.
- It defines how to connect the participating peers.
- Livekit is the standard for this as of writing.
- Defines how to connect to a server/other peers, how to update the connection,
how to subscribe to different streams...
how to subscribe to different streams...
- Another planned backend is a full mesh implementation based on MSC3401.
- The RTCSession types (application) have their own per application spec.
- Calls can be done with an application of type `m.call` see (TODO: link call msc)
@ -57,6 +57,13 @@ A complete `m.rtc.member` state event looks like this:
}
```
> [!NOTE]
> This relies on [MSC3757](https://github.com/matrix-org/matrix-spec-proposals/pull/3757).
> We need to have one state event per device, hence multiple "non-overwritable" state
> events per user.
>
> More specifically this uses the approach outlined in this [comment](https://github.com/matrix-org/matrix-spec-proposals/pull/3757#issuecomment-2099010555).
giving us the information, that user: `@user:matrix.domain` with device `DEVICEID`
is part of an RTCSession of type `m.call` in the scope/sub-session `""` (empty
string as call id) connected over `FOCUS_A`. This is all information that is needed
@ -75,8 +82,8 @@ Based on the value of `m.application`, the event might include additional parame
required to provide additional session parameters.
> A thirdRoom like experience could include the information of an approximate position
on the map, so that clients can omit connecting to participants that are not in their
area of interest.
> on the map, so that clients can omit connecting to participants that are not in their
> area of interest.
#### Historic sessions
@ -86,12 +93,12 @@ historic sessions need to be computed and most likely cached on the client.