Support simulcast for svc codecs (vp9/av1) - #2083
Conversation
🦋 Changeset detectedLatest commit: b9a7d3f The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
size-limit report 📦
|
1egoman
left a comment
There was a problem hiding this comment.
High level makes sense to me, but I'm probably not the best person to give a lower level review and defer to @xianshijing-lk or @lukasIO
| private getServerVersion(): string | undefined { | ||
| const joinResponse = this.engine?.latestJoinResponse; | ||
| return joinResponse?.serverInfo?.version || joinResponse?.serverVersion || undefined; | ||
| } | ||
|
|
There was a problem hiding this comment.
nitpick: with the introduction of this, could you also update
client-sdk-js/src/room/Room.ts
Line 342 in ae32e31
| /** | ||
| * VP9 and AV1 are published as SVC (a single RTP stream carrying every spatial layer) | ||
| * by default. They can instead be published as real, rid based simulcast — one | ||
| * independent stream per rid, each carrying a single spatial layer — when the caller | ||
| * opts in with `simulcast: true` and a single spatial layer scalability mode (`L1Tx`). | ||
| * | ||
| * The SFU has to be told about this: without an explicit | ||
| * `SimulcastCodec.videoLayerMode` it assumes `MULTIPLE_SPATIAL_LAYERS_PER_STREAM` for | ||
| * any SVC capable codec. | ||
| */ |
There was a problem hiding this comment.
suggestion: It might be worth adding some of this context to a user facing docstring in RoomConnectOptions (and eventually docs.livekit.io). As is I don't think it is very discoverable.
Also maybe worth considering as well - some sort of debug log that prints when isSVCSimulcast(...) is true in the connection path, to be able to confirm it is enabled properly.
Conditions to enable:
ScalabilityMode: L1txandsimulcast: True