mirror of
https://github.com/vector-im/element-call.git
synced 2026-10-16 23:45:50 +00:00
fixup docs
This commit is contained in:
@@ -33,18 +33,18 @@ therefore `Element Call → sdk`, never the reverse. The migration from today's
|
|||||||
│ per track MediaTrack { source kind muted$ encrypted$ stats$ attach() }│
|
│ per track MediaTrack { source kind muted$ encrypted$ stats$ attach() }│
|
||||||
│ │
|
│ │
|
||||||
│ ┌───────────────────────────┐ MediaBackend ┌───────────────────────────┐ │
|
│ ┌───────────────────────────┐ MediaBackend ┌───────────────────────────┐ │
|
||||||
│ │ session: MatrixRTC │ backend/api.ts │ media backend │ │
|
│ │ session: MatrixRTC │ media-backend/ │ media backend │ │
|
||||||
│ │ │ │ backend/livekit/ today, │ │
|
│ │ │ api.ts │ media-backend/livekit/ │ │
|
||||||
│ │ js-sdk MatrixRTCSession, │ │ or options.backend │ │
|
│ │ js-sdk MatrixRTCSession, │ │ today, or options.backend │ │
|
||||||
│ │ later the rust-rtc │ prepareLocal │ │ │
|
│ │ later the rust-rtc │ prepareLocal │ │ │
|
||||||
│ │ crate behind a bridge │ Transport ───▶│ token service: │ │
|
│ │ crate behind a bridge │ Transport ───▶│ token service: │ │
|
||||||
│ │ memberships from room │ delegateDelayed │ OpenID → JWT, │ │
|
│ │ memberships from room │ delegateDelayed │ OpenID → JWT, │ │
|
||||||
│ │ state and sticky events │ Leave ───────▶│ delegation probe │ │
|
│ │ state and sticky events │ Leave ───────▶│ delegation probe │ │
|
||||||
│ │ own membership, delayed │ │ ConnectionManager: │ │
|
│ │ own membership, delayed │ │ ConnectionManager: │ │
|
||||||
│ │ leave, retries │ mediaKeys$ ────▶│ one LiveKit room per │ │
|
│ │ leave, retries │ mediaKeys$ ────▶│ one LiveKit room per │ │
|
||||||
│ │ discovery of the local │ │ transport url, local │ │
|
│ │ discovery of the local │ mediaFor$ ─────▶│ transport url, local │ │
|
||||||
│ │ transport (homeserver) │ mediaFor$ ─────▶│ published, remote │ │
|
│ │ transport (homeserver) │ ◀─ tracks$, │ published, remote │ │
|
||||||
│ │ join state machine │ ◀────── media$ │ subscribed │ │
|
│ │ join state machine │ encryptionError$│ subscribed │ │
|
||||||
│ │ (LocalMember) │ local.publish, │ Publisher: local tracks, │ │
|
│ │ (LocalMember) │ local.publish, │ Publisher: local tracks, │ │
|
||||||
│ │ transport registry │ setPublishing▶│ upstream paused until │ │
|
│ │ transport registry │ setPublishing▶│ upstream paused until │ │
|
||||||
│ │ (TransportMetadata) │ ◀─ connections$ │ joined │ │
|
│ │ (TransportMetadata) │ ◀─ connections$ │ joined │ │
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ Please see LICENSE in the repository root for full details.
|
|||||||
* The seam between the session and whatever carries its media. The session
|
* The seam between the session and whatever carries its media. The session
|
||||||
* speaks MatrixRTC: memberships, transports as they appear in them, the
|
* speaks MatrixRTC: memberships, transports as they appear in them, the
|
||||||
* delayed leave. A backend speaks one media protocol and hands back the
|
* delayed leave. A backend speaks one media protocol and hands back the
|
||||||
* media of each member. `backend/livekit/` is the one backend today.
|
* media of each member. `media-backend/livekit/` is the one backend today.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { type Logger } from "matrix-js-sdk/lib/logger";
|
import { type Logger } from "matrix-js-sdk/lib/logger";
|
||||||
@@ -157,7 +157,12 @@ export interface MediaBackend {
|
|||||||
/** Every connection the backend holds. For debugging and devtool purposes.*/
|
/** Every connection the backend holds. For debugging and devtool purposes.*/
|
||||||
readonly connections$: Behavior<BackendConnection[]>;
|
readonly connections$: Behavior<BackendConnection[]>;
|
||||||
|
|
||||||
/** Plays the members' audio on this device, on the connections of now and later. */
|
/**
|
||||||
|
* Plays the members' audio on this device: on the local transport's
|
||||||
|
* connection, whether it is connected yet or not, and on every connection
|
||||||
|
* created from then on. A connection to a remote transport that already
|
||||||
|
* exists keeps the device it was created with.
|
||||||
|
*/
|
||||||
setAudioOutputDeviceId(deviceId: string): Promise<void>;
|
setAudioOutputDeviceId(deviceId: string): Promise<void>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ Please see LICENSE in the repository root for full details.
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import {
|
import {
|
||||||
ConnectionState as LivekitConnectionState,
|
|
||||||
type LocalTrackPublication,
|
type LocalTrackPublication,
|
||||||
ParticipantEvent,
|
ParticipantEvent,
|
||||||
type Room as LivekitRoom,
|
type Room as LivekitRoom,
|
||||||
@@ -207,13 +206,12 @@ export class Publisher {
|
|||||||
return [...this.room.localParticipant.trackPublications.values()];
|
return [...this.room.localParticipant.trackPublications.values()];
|
||||||
}
|
}
|
||||||
|
|
||||||
/** A room that is not connected yet takes the device from its options instead. */
|
/**
|
||||||
|
* Works on a room that is still connecting too: LiveKit keeps the device
|
||||||
|
* in the room's options and gives it to every participant that arrives.
|
||||||
|
*/
|
||||||
public async setAudioOutputDevice(deviceId: string): Promise<void> {
|
public async setAudioOutputDevice(deviceId: string): Promise<void> {
|
||||||
if (
|
if (this.room.getActiveDevice("audiooutput") === deviceId) return;
|
||||||
this.room.state !== LivekitConnectionState.Connected ||
|
|
||||||
this.room.getActiveDevice("audiooutput") === deviceId
|
|
||||||
)
|
|
||||||
return;
|
|
||||||
await this.room.switchActiveDevice("audiooutput", deviceId);
|
await this.room.switchActiveDevice("audiooutput", deviceId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user