Skip to content

Rework simulcast support #297

Open
Open
@k0nserv

Description

@k0nserv

Currently the way simulcast support is implemented(for ingress) is that each send encoding on the remote side results in a distinct track being created. i.e.

const transceiver = pc.addTransceiver(track, { 
  direction: 'sendonly',
  sendEncodings: [{
    { rid: 'l', active: true, maxBitrate: 250000 },
    { rid: 'm', active: true, maxBitrate: 750000 },
    { rid: 'h', active: true, maxBitrate: 1500000 },
  },  
});

// Do negotiation with webrtc-rs

Will result in on_track firing three times webrtc-rs.

This is not in line with the specification as this is logically still a single track, not three separate tracks.

Similarly when egress support is merged we should rework that to use a single egress track with send encoding being internal.

Proposed behaviour

We should bring the behaviour in line with the specification i.e. only a single track should be created, regardless of the number of sendEncodings the remote peer specified.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions