Skip to content
This repository was archived by the owner on Feb 25, 2026. It is now read-only.
This repository was archived by the owner on Feb 25, 2026. It is now read-only.

Latching in SST-MS #138

@aboba

Description

@aboba

In SST-MS, multiple SSRCs are used to send a single track. The question is how these multiple SSRCs can be associated with a track on the receiver. One of two solutions suggest themselves:

a. Use the receiverId as a "trackId" to enable the receiver to determine if the new SSRC is a layer within an existing track;
b. Allow an "SSRC range" to be specified for existing tracks, to allow them to be distinguished.

Problem description:
If multiple cameras are in use, there is not enough information in the RtpUnhandledEvent for the receiver to tell whether the unhandled RTP packet corresponds to a new layer within an existing track, or a new track.

If a matching RTCRtpReceiver object cannot be found, there is no way for the browser to determine the codec that the incoming SSRC corresponds to, and therefore no way to parse the payload to determine the layerIDs.

If an RTCRtpReceiver was created with a "wildcard" SSRC within RTCRtpEncodingParameters, the codec would be specified (allowing the layerId to be determined), and the new SSRC would "latch".

If the receiverId acts as a "track identifier" it would be possible to determine if the layer was part of an existing track or not. However, if the layer was part of an existing track it would in all likelihood be too late to do anything useful. A new receiver would have already been created with an associated buffer, and once stop() was called on the newly "latched" RTCRtpReceiver object, the packets received by the newly "latched" object would be thrown away.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions