- From: Jan-Ivar Bruaroey <jib@mozilla.com>
- Date: Thu, 30 Apr 2015 17:30:20 -0400
- To: Stefan Håkansson LK <stefan.lk.hakansson@ericsson.com>, "public-webrtc@w3.org" <public-webrtc@w3.org>
- Message-ID: <55429EEC.8080304@mozilla.com>
On 4/30/15 12:48 PM, Jan-Ivar Bruaroey wrote: > On 4/30/15 2:42 AM, Stefan Håkansson LK wrote: >> On 24/04/15 17:38, Jan-Ivar Bruaroey wrote: >>> var senderX = pc.addTrack(trackX); >>> pc.createOffer(); >>> var senderY = pc.addTrack(trackY); >>> // Both trackX and trackY will always be in the offer. >> How does that work? > > See my answer to Justin's post in this thread (tl;dr because > createOffer() is queued to run later). To reiterate, I think the important guarantee is the one above, which would extend to the end of the current run. This would be deterministic, and today we don't have that. I see no reason to conflate the above with what happens after that (but I'll speak to it since you asked): >> And what determines if trackY is represented in the >> offer or not (in the example it is added right after createOffer is >> called, but there can be many scenarios here, like a bit later or in >> another context)? If trackY is added later or in another context, then one /could/ determine whether it is before the queued createOffer starts: * If pc.signalingState == stable, then createOffer will start after the current run completes (it's on the promise micro-task queue), before the next event on the main task queue. * If pc.signalingState != stable, then use pc.onsignalingstatechange. But ultimately, once createOffer has started it runs asynchronously, so there's a window of undeterminism there, but neither this PR [1] nor your original question was about solving that, I believe. .: Jan-Ivar :. [1] https://github.com/w3c/webrtc-pc/pull/222
Received on Thursday, 30 April 2015 21:30:51 UTC