Alright Everybody, this is a big one!
We have been at it for about 10 months now and we are really, really, really happy to now bring it to you.
Adaptivity is all about getting Jitsi Videobridge to adapt to your available bandwidth and only send you as much media as you can afford. This is a very tricky business as there are many moving parts. To begin with, your available bandwidth is something that is determined by your connection to your Internet Provider on the one hand, but also by the other applications currently using that same pipe. Also, all other participants are sending video streams that are constantly changing and, on top of it all, the whole premise of Jitsi Videobridge and SFUs in general is that we don’t want to transcode media in order to keep it lightweight, so we use things like simulcast and temporal scalability.
So, in order for the bridge to adapt to your available bandwidth, it has to A) reliably determine how much there is of it actually available, B) go and select a subset of streams and framerates coming from the other participants that would B1) fit in there and B2) make sense for you to see at this point in time and of course C) repeat that very, very frequently because the available bandwidth and the amount of available content change all the time.
All in all, this is all insanely complicated ….
…. but not impossible!
In the following video you see a scenario with a multi party call. At first all bandwidth is available and all participants are streaming on their maximum necessary bandwidth. We are receiving the on-stage speaker, Yana, in 720p and everyone else in a thumbnail, 180p resolution.
Next, we activate the OS X Link Conditioner so that it would make things slightly harder. The bridge immediately notices this and drops Yana’s resolution to 360p. We then ask link conditioner to be even more aggressive and only leave us with 200 kbps bandwidth. Just enough for audio. You can immediately see how Yana’s, as well as all other participants videos are interrupted, but Yana’s audio continues (there is no sound on the video, but you can see Yana’s audio levels reacting to her speech). Finally, I disable Link Conditioner and you see how Jitsi Videobridge gradually increases the bitrate it is sending us until it goes back to its initial state and Yana is once again clearly visible in 720p.
Isn’t this amazing?