- From: Taylor Brandstetter <deadbeef@google.com>
- Date: Fri, 28 Jul 2017 10:10:39 -0700
- To: "Cullen Jennings (fluffy)" <fluffy@cisco.com>
- Cc: Iñaki Baz Castillo <ibc@aliax.net>, "public-webrtc@w3.org" <public-webrtc@w3.org>
- Message-ID: <CAK35n0Z7Ehsi7=mL_05Aq+vmyheEbH+V4Nm64j1W7HFSpcO=+Q@mail.gmail.com>
Another option (though not currently available) is limiting the per-encoding bitrate on the sender side with RTCRtpEncodingParameters.maxBitrate <https://www.w3.org/TR/webrtc/#dom-rtcrtpencodingparameters-maxbitrate>. On Fri, Jul 28, 2017 at 7:38 AM, Cullen Jennings (fluffy) <fluffy@cisco.com> wrote: > > Another approach is to use the priority API. > > It also depends on which side end wants to controls this. If the SFU is > makeing the decisiong on what is important, then the best option is much > differnt than if the JS in the browser is making the decision. Lots of SFU > do use SDP to controls this thought I would not suggest that the client JS > munging SDP was a good approach to this. > > > > On Jul 28, 2017, at 4:17 AM, Iñaki Baz Castillo <ibc@aliax.net> wrote: > > > > Hi, > > > > Assuming I'm talking to a SFU by sending mic audio + webcam video + > > desktop sharing video over the same PeerConnection with BUNDLE, which > > is the WebRTC proposed solution to dynamically limit the bitrate of > > one of them? > > > > Use case (assuming I have a really great uplink connection): > > > > 1) I am sending webcam video in VGA or HD. > > > > 2) At some time, I add desktop sharing video in Full HD. > > > > 3) So I want to lower my webcam video bitrate (resolution and/or > > framerate) to the minimum, so others can focus on receiving the bits > > of my desktop sharing. > > > > 4) Then I finish the desktop sharing so I want my webcam in VGA or HD > again. > > > > > > > > Possible approaches: > > > > > > > > a) Transport-CC > > > > This is just valid for the sender to limit its sending bitrate based > > on transport feedback provided by the remote endpoint. However, no way > > to artificially limit such a bitrate via API or RTCP from the remote, > > and overall, this is related to the whole transport and all the tracks > > carried on it. > > > > Anyhow, transport-cc is always useful as it prevents the peer from > > sending more than he can. > > > > > > > > b) REMB > > > > REMB feedback messages originated by the remote endpoint can, > > theoretically, limit the sending bitrate of a set of SSRCs. So, the > > server could limit the SSRC of my webcam video while, at the same > > time, tell me that my BWE for my desktop sharing SSRC is very high. > > > > Problems with REMB are the fact that it's not a standard (despite all > > the browsers implement it), and worse: It seems that current > > implementation apply the BWE constrain to the whole transport and not > > per SSRC list (as the draft states). > > > > > > c) SDP a=b:AS > > > > NO > > > > > > > > d) MediaStreamTrack API > > > > Dynamically call webcamTrack.applyConstraints(options) by setting low > > height/width/frameRate values. AFAIK this does not even work in > > current implementations. > > > > > > > > e) TMMBR > > > > Real standard valid for a server to limit the bitrate of a specific > > SSRC. IMHO this could perfectly satisfy this use case. > > > > However, Chrome does not want to properly implement it (they are about > > dropping support for it) and others do not even implement it. > > > > > > > > f) Simulcast / SVC > > > > Sure this helps in this scenario, but I hope it's not 100% needed. > > > > > > > > g) Split PeerConnections > > > > Use separate PeerConnections for sending the webcam video and the > > desktop sharing video, so transport based limitation (real world REMB > > implementations) can be used. > > > > If this is the best we have, this is so sad. > > > > > > > > Do I miss any other approach? Which would be the WebRTC API/spec to > > achieve this goal? > > > > Thanks a lot. > > > > > > -- > > Iñaki Baz Castillo > > <ibc@aliax.net> > > > >
Received on Friday, 28 July 2017 17:11:03 UTC