Disable simulcast based on # of users

I am afraid you don’t have the layer suspension enabled on your deployment.

Once you enable that, you will notice that the client uplink will vary based on how that participant is being viewed by others in the call. That should accomplish both the points you mentioned. Pls give it a try and let me know.

Fantastic I’ll look into it.
Can you refer me to the file that has the enableLayerSuspension logic. Cause we will have a situation where:

  • 1 participant is on stage for everyone = 1 stream of 720p

  • 1 participant is on stage for some of the other participant = simulcast streams (we use only SD and HD)

  • No participants are on stage = a logic we set by number of participants and video height of the tiles to determine the one stream needed HD or SD

Questions:
So in some situations we need the layer suspension and in some we don’t.

  1. Can you direct me to that file please?
  2. if you can explain or show me the logic of how the JVB evaluates the bandwidth available to each participant and set the streams accordingly

Thank you for all your help @jallamsetty

Layer suspension logic in the client is implemented here - https://github.com/jitsi/lib-jitsi-meet/blob/master/modules/RTC/TraceablePeerConnection.js#L2236

The bandwidth estimation logic used by the JVB is rather complicated and is based on transport-wide congestion control mechanism implemented by the browser - https://tools.ietf.org/html/draft-holmer-rmcat-transport-wide-cc-extensions-01

Hi @jallamsetty,
Need your help cause it doesn’t seem to work for us.

We are using lib-jitsi-meet library. We set enableLayerSuspension:true

Opened a room with 3 participants 1 teacher and 2 ( A,B )students and simulcast enabled.
Both students selected the teacher so they requested the HD layer.
The teacher selected student A.
Student B was not selected by anyone, we checked student B enabled encodings from
the browser console
var videosender=room.getActivePeerConnection().findSenderByKind(‘video’);
*** videosender.getParameters();***

We saw all ecodings were active. Any idea why layer suspension did not work for Student B?

@jallamsetty @damencho

Can you direct us to the logic of the JVB stream selection. As I mentioned before that even when we select participants the JVB send lower resolution layers instead of HD ones.

1 Like