Hi,
Not sure if this is a browser related bug or something to do with Janus.
Scenario:
Two or more publisher joins the video rooms with simulcast enabled (3 layers). When the system (laptop) they are on experiences excess load. QualityLimitationReason switches from None to CPU and the browser soon stops sending the lowest substream S0. This causes an issue if the subscriber is already on S0 as janus will not switch to a higher substream automatically if the current one is stopped/disabled.
Shouldn’t the higher substreams (S2, S1) be stopped for these situations instead of S0?
This is happening on our server with 0.x branch (latest release). But i’m also able to replicate this reliably on the Janus demo by following the below steps. This has been tested on Chrome 114 on a Mac.
- Join the demo Janus WebRTC Server (multistream): Video Room Demo on two tabs/machines
- Switch substream to SL 0 for the subscribers on both machines
- Set Bandwidth to “no limit” on both machines
- Do something that will cause your systems CPU to spike (Open lots of tabs/applications). It helps if you have a crappy machine
- You can notice in webrtc internals that the peer has changed its QualityLimitationReason to CPU. After ~30 seconds, the message will show up in the console that janus has stopped receiving our video. You can see that the video freezes and the video muted event is triggered.
- Sometimes the video gets back automatically, otherwise you can manually click on SL1, SL2 to switch to the higher substream and the video starts playing again.
Thanks.