Simulcast substream 0 ignored?

Hi,

I am not sure if this is a bug or I am doing something wrong, but it looks I cannot arbitrary select layer 0 from simulcast, server always configure layer 1 instead, it does work as expected for layer 1 and 2. What could be happening for the server to make that decision? Thanks in advance.

Example:

Send:
{request: "configure", mid: "1", substream: 0}

Receive:
{videoroom: "event", room: "X", mid: "1", substream: 1}

Maybe you’re configuring simulcast incorrectly, as substream 0 is the only one that should always be sent, which is why we use it as a fallback. The fact you see 1 and 2 but not 0 means that maybe you configured the layers in reverse order?

Didn’t meant to reverse layer order, but I could have screwed it up! Also have the feeling it might has something to do with Room or Publisher bitrate, will keep digging into it, thanks for the help!

I have same problem with substream “0”. I was trying to revers layers order (“hml” → “lmh”), but result always the same, i can’t select substream “0”, and it always fallbacks to substream “1”. I was also trying not to set encoding settings at all, but result the same.

I checked this on the Demo page, and it is don’t work there too. As you can see on the screenshot attached, “SL 0” button pressed but not becoming green.

I just checked with Firefox and Chrome and it works fine for me. Notice that you need to have enough bandwidth for simulcast: the default demo caps at 128kbps which is far from enough, so playing with the Bandwidth button to set, e.g., 2mbps or No Limit should get it to work.

I did notice some issues on Chrome with the EchoTest demo and simulcast, but it looks like a UI problem, so a separate thing I’m investigating now.

Hi, thanks. I repeated the test and noticed that when my camera works in 1280:720 resolution, simulcast works as expected and I can select substream “0”, but when my camera works in 640:360 resolution (stdres-16:9) or in 640:480 resolution (stdres), in this cases simulcast substream “0” cant be selected. Does simulcast needs at least 1280:720 as initial resolution ?

That’s normal. Our janus.js configures two resolutions for medium and low, where medium = half of high, and low = half of medium. If the “high” resolution is too low (640x360). then 1/4 of that is too low and the browser will simply refuse to encode it. This is why you don’t have substream 0: you need a high resolution that is high enough.

I think I understand what is this logic for. When I’m setting scaleResolutionDownBy (with 640:360 resolution):

  • 8 - for substream “1”
  • 16 - for substream “0”

And when I’m selecting substream “1” with this configuration (and it can be selected), I got a black screen. But at the same time, when I’m setting scaleResolutionDownBy (with 640:360 resolution):

  • 1.1 - for substream “1”
  • 1.2 - for substream “0”

I can’t select substream “0” any way.