- From: Justin Uberti <juberti@google.com>
- Date: Mon, 13 Feb 2012 00:57:10 -0500
- To: Stefan Hakansson LK <stefan.lk.hakansson@ericsson.com>
- Cc: "Timothy B. Terriberry" <tterriberry@mozilla.com>, "public-webrtc@w3.org" <public-webrtc@w3.org>
- Message-ID: <CAOJ7v-2MqWRf4fgFPO+P9n_TFnNHj2WMC=YGDy4nFet+B4arag@mail.gmail.com>
On Sun, Feb 12, 2012 at 1:36 PM, Stefan Hakansson LK < stefan.lk.hakansson@ericsson.com> wrote: > On 02/10/2012 08:09 PM, Timothy B. Terriberry wrote: > >> Stefan Hakansson LK wrote: >> >>> On 02/07/2012 12:20 AM, Timothy B. Terriberry wrote: >>> >>>> Similarly, it was argued at the F2F that ROAP was a subset of JSEP >>>> (though if Cullen is right and switching codecs causes a period where >>>> the receiver can't process what the sender is sending with JSEP, but not >>>> with ROAP, I don't see how that can be true), but I think it would have >>>> been hard to start with one and get to the other without working it out >>>> first. Doing that may in fact be an interesting exercise (in terms of >>>> getting more formalized semantics for things like setRemoteDescription() >>>> before moving on to those that also require modifying the SDP passed to >>>> setLocalDescription(), and separating out exactly what each one buys us >>>> in terms of our use-cases). >>>> >>> >>> Tim, could you elaborate a bit more on your proposal? I think it sounds >>> interesting, but want to understand more. >>> >> >> I don't think I have a specific proposal, I meant it mostly as a >> thought-experiment, along the lines of what Harald said: "[W]e should >> make sure we don't add stuff in the first iteration that we aren't sure >> we can live with as permanent features of the platform." >> >> As Jim Barnett has said elsewhere (echoing what I was trying to say in >> the F2F), setLocalDescription() is currently way under-specified. In >> addition to the list of things you can change in the SDP and the >> validation that SDP must pass (which Jim pointed out), I'd add the >> semantics of what happens when you pass it two different OFFERs in a row >> (which, as I understand it, is where it departs from 3264 semantics). If >> we can move forward without having to expose those things, with the >> intention of adding them later, I think that gets us to a usable spec >> faster. >> > > Agree fully. > > > >> Unfortunately, the only way I've seen to do that is to add another API >> call that combines createOffer() and setLocalDescription() (to ensure >> the SDP is not modified between the two), >> > > I have come to a similar conclusion. In fact, I think the browser should, > when needed (as a result of add/removeStream, or even add/removeTrack on a > MS attached to the PeerConnection) do that automatically. The reason being > that every time that is done (add/removeStream, or even add/removeTrack) > some signaling to handle this is needed - so the app would have to do > > 1. addStream (could be remove, or track addition/removal) > 2. createOffer > 3. setLocal > > why not have 2. and 3. happen automatically? > > Then we also have to figure out a way that the application can modify the > local description. But perhaps the first step there is to understand what > you would want to change, what would be legal, and then decide how (and if > we want to move fast we could add that later). > > (speaking strictly as a contributor) If we're just talking about createOffer/setLocalDesc (and not some automatic exchange of the offer that occurs as a result, for the reasons Harald mentions), I think this is an interesting idea. I thought of some edge cases but I think they may be solvable. - modification of the local session description: doable, as long as you don't send an OFFER until you're ready, you can just call setLocalDesc(OFFER) with your modified desc. Previous unanswered OFFERs are simply discarded. - adding multiple streams at once: similar problem as above, similar solution - just perform 2/3 for each stream. (Other solution is to not perform 2/3 until the next crank of the message pump, but that means you can't send the offer right away.) - callee behavior is different than caller behavior: we certainly don't want the callee to automatically generate an OFFER, and we may not want the callee to automatically ANSWER upon doing addStream (since that starts media transmission), but I think we could apply the desc as a PRANSWER, e.g. (separately) setRemoteDesc(OFFER) 1) addStream() 2) ld = createAnswer(remoteDesc(), null) 3) setLocalDesc(PRANSWER, ld) with 2/3 being done automatically as in your example above. > > > and adding more API to make >> something "simpler" doesn't seem like the right idea. Maybe someone else >> has a better approach. >> > > >
Received on Monday, 13 February 2012 05:57:58 UTC