[jitsi-dev] [jitsi-videobridge] Fine-Grained Control of Forwarded Simulcast Layers (#147)


#1

Hi there,
    I've been starting to work with the videobridge and lib-jitsi-meet to support a live video research project I'm working on. So far it has been awesome, especially with the recent lib-jitsi-meet support. Anyway, It would help me out if the bridge could support forwarding multiple high quality video streams to conference participants, as well as have mechanisms for the client to have stream by stream control of what layers were being forwarded.

The current selected participant mechanism is nice if you want to support a hangout like conference, but I'm particularly trying to design an experience where there may be multiple high, mid, or low quality videos that can change qualities somewhat dynamically. I don't think there is currently a means to support this kind of situation.

I currently have a mechanism implemented that adds a colibri message supporting a client requesting a particular simulcast layer on a video channel by ssrc. Is this a feature that people would be open to supporting? I realize that there are potentially different issues in terms of adaptive bandwidth control. I am just looking for some feedback on the feature. I can also work on preparing a pull request.

Thanks!

···

---
Reply to this email directly or view it on GitHub:
https://github.com/jitsi/jitsi-videobridge/issues/147


#2

Hello @bilhamil , we have been thinking about this for a while and various members of the community have expressed their interest as well. We know that some PRs are imminent that would allow for multiple selected endpoints by modifying the existing "selected endpoint" data channel message to hold an array of endpoints. Is this something that would fit your needs? You might want to join us next Monday in our next community call where we'll discuss some of this for sure.

···

---
Reply to this email directly or view it on GitHub:
https://github.com/jitsi/jitsi-videobridge/issues/147#issuecomment-187951968


#3

Hi @gpolitis, that would definitely be step in the right direction I think. I would like to potentially be able to access the in between simulcast layers eventually. I think with the selected endpoints approach it is not clear how to support that in particular. I would definitely be interested in being there for the community call. The call is next monday at 16:30 UTC?

···

---
Reply to this email directly or view it on GitHub:
https://github.com/jitsi/jitsi-videobridge/issues/147#issuecomment-187958706


#4

I see now, what you want to do is not going to be possible through the data channel message extension I had in mind (for which we have a PR already here https://github.com/jitsi/jitsi-videobridge/pull/148). There have been talks about exposing a more fine-grained control of forwarded simulcast layers in the last couple of months and we can definitely discuss that during the call (right, next Monday at 16:30 UTC).

···

---
Reply to this email directly or view it on GitHub:
https://github.com/jitsi/jitsi-videobridge/issues/147#issuecomment-188357199


#5

How does the algorithm for layer switching/selection currently work?

···

---
Reply to this email directly or view it on GitHub:
https://github.com/jitsi/jitsi-videobridge/issues/147#issuecomment-189378621


#6

It's controlled by the clients (highest quality for the "selected" endpoint, base layer for the rest).

···

---
Reply to this email directly or view it on GitHub:
https://github.com/jitsi/jitsi-videobridge/issues/147#issuecomment-189485990


#7

any update on this?
is there any api to manually select the simulcast layer from client using javascript ?

···

--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/jitsi/jitsi-videobridge/issues/147#issuecomment-286015492


#8

No updates. This still stands though: https://github.com/jitsi/jitsi-videobridge/issues/147#issuecomment-189485990 Note that you can select multiple endpoints if you use the API yourself, jitsi-meet only allows for one selected endpoint.

···

--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/jitsi/jitsi-videobridge/issues/147#issuecomment-286044875


#9

@saghul for non "selected" endpoints, is it using the lowest quality or the medium ?
i.e if you are using 1280x720, there will be 3 stream, so far from my experiment, jitsi meet, only utilize 2 ?

···

--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/jitsi/jitsi-videobridge/issues/147#issuecomment-286096522


#10

for non "selected" endpoints, is it using the lowest quality or the medium ?

The lowest.

if you are using 1280x720, there will be 3 stream, so far from my experiment, jitsi meet, only utilize 2 ?

If you have enough bandwidth we will use the highest when the endpoint is selected and the lowest when it's not. However, it's possible you don't enough bandwidth for the HD stream so we'll use the medium one.

···

--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/jitsi/jitsi-videobridge/issues/147#issuecomment-286097093


#11

@saghul when I test using 'os x network link conditioner' the hd video never drop to medium, it just freeze, any idea how to solve this?

···

--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/jitsi/jitsi-videobridge/issues/147#issuecomment-286148434


#12

@jtg-gg What network change are you introducing? Are you using meet.jit.si or your custom installation? Note that it may take a bit for the switch to happen, but I definitely see it happening here.

···

--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/jitsi/jitsi-videobridge/issues/147#issuecomment-286162005


#13

@saghul, ok I've tested meet.jit.si, it is working
The jitsi meet code base I am working on is from "5 sep 2016" tag "1212"
so I just wondering, when the fix for this is committed ?

···

--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/jitsi/jitsi-videobridge/issues/147#issuecomment-286307468


#14

@gpolitis probably knows better, but I think this might have to do to his recent work on adaptivity.

···

--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/jitsi/jitsi-videobridge/issues/147#issuecomment-286358614


#15

@jtg-gg adaptivity is experimental and thus not enabled by default in the master branch, but it is enabled in all of our deployments. If you want to give it a try you have to have to run the bridge with these system properties set (you can add them in /etc/jitsi/videobridge/sip-communicator.properties):

    org.jitsi.videobridge.TRUST_BWE=true
    org.jitsi.impl.neomedia.rtp.sendsidebandwidthestimation.BandwidthEstimatorImpl.START_BITRATE_BPS=2500000
    org.jitsi.videobridge.DISABLE_LASTN_NOTIFICATIONS=true
    org.jitsi.videobridge.ENABLE_SVC=true

···

--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/jitsi/jitsi-videobridge/issues/147#issuecomment-286552401


#16

thx @gpolitis will try this
so we only need to add these params to videobridge ?
how about the jicofo / jits-meet config.js ?

···

--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/jitsi/jitsi-videobridge/issues/147#issuecomment-286621808


#17

@gpolitis do you know by heart the minimum version of the JVB for these settings to work?

···

--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/jitsi/jitsi-videobridge/issues/147#issuecomment-293017368


#18

@debugmaster no, but you should not enable those if you're not updating frequently. It should be fine to enable those features on any bridge >= 926.

···

--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/jitsi/jitsi-videobridge/issues/147#issuecomment-293142933