- From: Henrik Boström <hbos@google.com>
- Date: Thu, 31 Jan 2019 09:47:04 +0100
- To: Harald Alvestrand <harald@alvestrand.no>
- Cc: public-webrtc@w3.org
- Message-ID: <CAEbRw2y3aZGk+fD-SYyty=GZdf8zqpPYGm2D+A=K8ZWPpX7uaQ@mail.gmail.com>
On Thu, Jan 31, 2019 at 9:45 AM Henrik Boström <hbos@google.com> wrote: > Transceivers, on the surface, sound harmless. But superfluous amounts of > transceivers has, I've heard, been a performance issue due to the > instantiation of encoders and decoders and whatnot. > I've been holding off on stop() due to spec work, but being able to stop > them would be good for this reason. I'm not sure why we keep stopped > transceivers around. > > Assuming you can stop transceivers, reusing transceivers would only be > useful in cases where you avoid renegotiation. If you renegotiate, it > doesn't matter if you reuse or create a new one. If you don't renegotiate, > you can't change the simulcast envelope (number of layers) anyway. > (...but you can always inactive the other layers for a similar effect.) > > On Thu, Jan 31, 2019 at 9:19 AM Harald Alvestrand <harald@alvestrand.no> > wrote: > >> I'm not sure why anyone would bother reusing a transceiver. It's just a >> data structure; throw it away (with .stop() once implemented) and start >> a new one. >> >> Den 28.01.2019 18:46, skrev Sergio Garcia Murillo: >> > I am not reusing transceivers for sending and creating new ones instead >> > for the exact reasons you are mentioning, but could we use >> > transceiver.stop() in this case and add a new transciver instead (that >> > would reuse the mid, right?)? >> >> Changing the MID is interpreted as throwing away the old transceiver and >> starting a new one. Reusing the MID would be interpreted as continuing >> to use the old transceiver on the other end, so no, you can't get there >> from here. >> >> > >> > (Note: Last time I checked, stop was not implemented in chrome, so not >> > sure how it behaves at all). >> >> Henrik has been holding off on stop() while the spec was being reworked. >> >> > >> > Best regards >> > Sergio >> > >> > >> > On 28/01/2019 17:29, Iñaki Baz Castillo wrote: >> >> Hi, >> >> >> >> It seems that reusing a transceiver is a pain. Use case: >> >> >> >> 1) Create a transceiver for sending video. >> >> >> >> 2) Pass 3 encodings in the `addTransceiver()` call or later in >> >> `transceiver.sender.setParameters()`. >> >> >> >> 3) Later "stop" the sender by stopping the track and calling >> >> transceiver.sender.replaceTrack(null) and transceiver.direction = >> >> "inactive". >> >> >> >> 4) Reuse the transceiver to send a new video, now without simulcast. >> >> Do it via transceiver.sender.replaceTrack(newTrack), >> >> transceiver.direction = "sendonly" and >> >> transceiver.sender.setParameters(newEncodings), where `newEncodings` >> >> is an array with just one encoding (no simulcast desired). >> >> >> >> According to the spec [*] this is not valid: >> >> >> >> [*] https://www.w3.org/TR/webrtc/#dom-rtcrtpsender-setparameters >> >> >> >>> 6.3 Let N be the number of RTCRtpEncodingParameters stored in >> >>> sender's internal >> >>> [[SendEncodings]] slot. >> >>> If any of the following conditions are met, return a promise >> >>> rejected with a newly >> >>> createdInvalidModificationError: >> >>> >> >>> 6.4 encodings.length is different from N. <==== THIS >> >> >> >> So reusing a transceiver is just a pain because having to reuse >> >> previous encodings is not friendly at all. >> >> >> >> Yes, of course, I could initially set 20 encodings and set >> >> active=false in most of them, so later I can switch them on/off >> >> individually to get the "desired" behavior. No. This is a pint. >> >> >> >> >> >> Can we please move to WebRTC 2.0 and get rid of SDP semantics and >> >> artificial limitations due to the nature of SDP? >> >> >> >> >> > >> > >> >> >>
Received on Thursday, 31 January 2019 08:47:38 UTC