- From: Stefan Hakansson LK <stefan.lk.hakansson@ericsson.com>
- Date: Thu, 15 Nov 2012 15:18:17 +0100
- To: public-webrtc@w3.org
Dom, thanks! I have only one comment: * I think "[NEW] ACTION: Cullen to update draft to remove reference." should not be here, from the context of the discussion I interpret that it is an IETF document that should be updated. Stefan On 11/15/2012 11:37 AM, Dominique Hazael-Massieux wrote: > Hi, > > I've just finished compiling and cleaning up the draft minutes of our > F2F meeting two weeks ago at TPAC: > http://www.w3.org/2012/10/29-webrtc-minutes.html > http://www.w3.org/2012/10/30-webrtc-minutes.html > > The minutes of the Media Capture Task Force meeting on the afternoon of > October 30th will be send separately to the media capture task force > mailing list. > > Please send corrections as needed; text-only copy of the minutes > embedded below. > > Dom > > Web Real-Time Communications Working Group F2F > > 29 Oct 2012 > > See also: [2]IRC log > > [2] http://www.w3.org/2012/10/29-webrtc-irc > > Attendees > > Present > andy_hutton, adambe, hta, stefanh, derf, burn, > dan_druta, richt, anant, dom, juberti, jim, matthew, > ekr, fluffy, Magnus > > Regrets > Chair > Harald, Stefan > > Scribe > adambe, markus, JimB, martin > > Contents > > * [3]Topics > 1. [4]API functionalities missing in PeerConnection API > 2. [5]SDP handling > 3. [6]Implementation status > 4. [7]General error handling principles > 5. [8]Call flows Walk-through > 6. [9]State machines > * [10]Summary of Action Items > __________________________________________________________ > > <inserted> scribenick: adambe > > hta: the best use of face-to-face time is to be specific > ...: people pay more attention campared to mailing lists > ... we've tried to make the agenda specific > ... we might go with presenters proposal > ... there also be discussions > ... we should record off-topic topics and move them to the AOB > session > > stefanh: fist session is about API functionality we haven't > addressed yet > ... this might be the least concrete item on the agenda > ... what de we need to do now and what can we postpone > > API functionalities missing in PeerConnection API > > [11]Stefan's slides > > [11] http://www.w3.org/2011/04/webrtc/wiki/images/1/1e/MoreAPIs.pdf > > stefanh: API topics > ... width, hegiht sent over a PeerConnection > ... priority > ... is media flowing? > ... how much bandwith is used > ... how much can be used > ... how to reject media streams > ... echo control > ... one thing missing on the slides > ... should we support security descriptions > > (a use case is presented) > > scribe: one peer sends video with two different resolutions to > two other peers > ... are people ok with this? > > fluffy: we should support this > > burn: you're showing the entrence and the consumer side > > stefanh: yes > > hta: there are multiple ways to achive this reuslt > ... first question is.. do we need to support this? > ... the answer is yes > ... then how should we solve it > > stefanh: this is the most difficult slide in my deck > ... application knows about the receiving side > ... or the receiving side could tell the sender > ... third possibilty is that the app isn't involved > > matthew: even if the receiver is involved the sender needs to > be involved > > justin: there needs to be some higher limit > > matthew: there might be a lot of contstraints > > fluffy: this is one of the reasons we need constraints > > stefanh: we shouldn't modify the sdp unless we have very good > reasons > > hta: we currently don't use a speakers queue > > ekr: what do we expect to happen if the receiver asks for a > different aspect ratio > ... should the PeerConnection rescale > ... ? > > justin: the sender might need to chose the closest thing > > hta: we want people to separate the case where you really > require something compared to the case where you really can't > live without something > > <matthew> side comment: generally we either need to fully > specify the SDP the is used to negotiate things like this OR we > need contraints. unfortunately when there's contraints, we > *also* need to fully specify the SDP that flows between them... > unless we choose to have it *only* be an API issue ("direct > manipulation" vs. "constraint setting") > > stefan: is the sending app or sending PeerConnection informe > > justin: information about the consumer dimensions could be sent > as a session description > > fluffy: the connection to the video tag is interesting > ... would it be reasonable to adjust the send size to the > consumer size? > ... this was a driver for renegotiation callback > > martin: you don't have the consumer in the initial negotiation > > fluffy: it's not always true > > derf: css also impacts this > > fluffy: a video tag might be specified with a size or not > > stefanh: there could be several video tags that wants to affect > the sender side > > hta: there's a ultimate fallback video size > > burn: smart browsers might behave differently > > matthew: smart browser decisions must be overidden if the > developer wants to do something else > > burn: if we have an API then the browser must take input from > the API into account... otherwise the browser can do its magic > > stefanh: what is the conclusion? > ... the receiving side can influence, but we also need an API > to let the developer tweak > > ekr: do we want information from the receiver to bubble back > all the way to the camera on the sender side? > > burn: a browser can use any valid value in a contraint range > > matthew: if several consumers (local, remote).. who wins? > > ekr: some constrains are enforced when set and some constrains > seems to be enforced continiously > > burn: we might need a constraints that says "do not change > video size" > > stefanh: recap on proposed conclusion > ... receiving side as driver with an API for the app to > influence > > matthew: there's two ways to implement this > > fluffy: we don't know if we'll use RTCP or SDP to negotiate > video size > > matthew: even if we go with RTCP we need an API to influence > how the browser should behave > > stefanh: let's move on > ... next slide > ... if the receiver detaches a stream from the consumer.. what > should happen, > ... ? > > ekr: what if sender offers something that the receiver doesn't > want? > > stefanh: we'll get to that in a later slide > > fluffy: we have two operations.. mute (undetectable from the > sender side) and to say "don't send me packets" > > justin: how do you say that I only want a subset of the offered > set of streams > ... we don't have a good way to express that today > > stefanh: next slide > ... requeseting a certain bandwith > ... there's an IETF draft talking about this > > DanD: I propose a priority param to addStream() > ... we can discuss how the priority information should be > handeled but we should decide on a mechanism to specify the > intent > > stefanh: addStream() is only called once per stream, it's a > problem > > DanD: we're the right group to specify the priority intent > > burn: intent means it might not happen > > <martin> hmm...s/constraint/pref/g ? > > <ekr> ? > > <martin> that works too > > <matthew> there's a difference between "preferences" and > "absolute limits" > > <matthew> i "prefer" 720P, but there's no way i ever want >2560 > horizontal pixels > > <burn> no, constraint != intent > > DanD: at least the browser sholud be able to say that I marked > you packets in a certain way > > <burn> intent == hint, discussions about hints lead to a > decision to support both mandatory and optional constraints > > <matthew> if you just go with direct manipulation then the API > only has "settings", and the difference between "constraint" > and "preference" is JS code > > <matthew> but the moment you let the two ends talk to each > other via possibly-unmodified SDP blobs then you need places on > the monster where it can be poked with a stick > > Göran: we should describe this case in more detail > > scribe: can the network trust the diff-serv code points set by > the app > > fluffy: in some environment you can't > ... they might provide information > ... but a separate request is needed to verify > > Göran: we need more discussion around use cases > > fluffy: I think this should be a topic for the AoB section > > (people agree) > > hta: new topic - Security for Qos flow labels > > ekr: there might be two API surfaces needed: tie constraints to > media flow, (missed the other one) > > DanD: I wan't a request that should be handeled by the trusted > environment > > matthew: even if diff-serv cps isn't supported a system may > enforce priority anyhow (we need to support this case as well) > > hta: new topic for AoB - Control of the DSCP interface > > stefanh: next slide > ... other side of the same coin > ... feedback on bw.. > > martin: I thin we need generic feedback on constraints set > ... there might be existing mechanisms > ... for others we might need to add something > > matthew: e.g., if video has highter priority over slides, the > app might want to know if the slides can't be sent at all > > stefanh: next slide > ... sender side pause/resume > ... we currently have enable/disable on MediaStreamTrack > ... every consumer is affected > ... we could have enabel/disable on PeerConnection > > burn: we don't need that since you could clone media streams > > hta: we implemented enable and disable as affecting the > associasion between a stream and track > > stefanh: next topic, AGC > > fluffy: the text on the slides looks good to me > > <martin> conclusion here was that we don't need to prioritize > the agc/noise settings, it's not a preference, it's a setting > > <martin> it might also be necessary to change this on the fly > > burn: what happens if you turn AGC on and it's not available > > fluffy: it should be a on/off setting > > derf: I hope there's a way to enumerate settings > > <martin> we need a way to enumerate settings, for sure > > fluffy: we should require that > > <martin> agc/noise is a property of a track > > hta: AGC should be on track level > > stefanh: next topic > ... rejecting streams > > martin: we need to know if multiple streams are offered > ... we need basic methods on the session description > > derf: example: you offer me 10k streams.. how do I reject > > DanD: it's not only if your device can do something.. there's > also a question if your service can support this > > martin: we need to know what you get before you can say what > you want to accept > > hta: if we have a mechanisms for the receiver to turn off a > stream at any point.. would it be sufficient to turn it off > rather than not accepting it? > > matthew: it might be a resource question > > ekr: I interpret it as: you set the remote description and you > see what streams are offered > > stefanh: is the sending app informed about a rejected streams > ... ? > > hta: if the use case for rejecting streams is to save resources > then the sender needs to know > > matthew: it's important how quickly can this be done > > fluffy: can someone send a proposal to the list? > > (I missed to scribe a lot of stuff while I was talking) > > stefanh: next thing - AEC > > fluffy: one param you need is what's going to the speakers > > <martin> new issue that is related to this, and one that I will > bring up later when we talk about this: SDP describes RTP > sessions. The one m= section can have multiple tracks. How do > we learn of these other than just waiting for arrival of > packets on one of those? > > <hta> adambe said: I sent a proposal to the list with inbound > and outbound streams as different objects, which might make > this discussion easier; missed having feedback on that. > > <matthew> another issue that's related to the last slide and > not yet decided (and different in different implementations) is > what to offer/send before user consent on a sending device > occurs. one approach is to say "recvonly" and change to > "sendrecv" when the consent happens, the other is to say > "sendrecv" and send muted audio + black video until consent is > received. recvonly->sendrecv takes the extra round trip to > enable. > > (scribe is missing a lot of stuff here) > > burn: why do we need API for this? > > fluffy: you might want to turn it off > > burn: could this be a browser control? > > someone: music is a use case where you wan't to turn EC off > > matthew: broadcast is also a use case where you want to turn > AEC off > > martin: if the browser and user wants differents things, the > user setting should win > > stefanh: final slide - SDES > ... wait until RTCWeb has discussed this > > ekr: yes > > stefanh: that was easy > ... summary slide > > martin: you could get two different tracks - one with AEC and > one without > > hta: new AoB (MC TF) to topic - Multiple open of camera/mic? > > martin: AGC, NR should be fairly simple > > burn: rather than doing this right now we should sumarize what > we have decided the last hour and update the summary > > hta: there are things that needs to be discussed and some that > just can be edited in > > Acoustic Echo Cancellation > > stefanh: we're 15 minutes before schedule > > <markus> coffee break > > <hta> anyone remote actually here? > > SDP handling > > [12]Cullen's slides on SDP handling > > [12] > http://www.w3.org/2011/04/webrtc/wiki/images/2/2d/RTCWeb-SDP-API_v6.pdf > > <markus> getting started, markus is the scribe > > <markus> fluffy showing slides > > issues: what SDP do createOffer and createAnswer create and how > they can be manipulated before passing them back to the browser > > matthew:some changes are ok from SDP syntax perspective but not > for the browser to act upon > > goals: clear definition of SDP and error handling rules > > how are new ICE candidates added to the set SDP > > Matthew: when I ask which SDP is in use is it the one I have > set or can it be something slightly different? > > constraints: can be used to enable common use cases, but do not > solve what can be changed > > burn:constraints can affect what SDP gets generated in the > first place so it does not need to be modified anymore > > fluffy: the place to define SDP use is in the JSEP draft - > latest draft has a start > > <AndyHutton> remote audio not working > > matthew:state transitions need to be taken into account, can't > call everything multiple times > > <matthew> specifically, setRemoteDescription("answer") is > restricted to only-call-once even though we are saying that > enforcement of these transitions is up to the JS > > what can be changed between create* and setLocal/Remote > > use cases: remove codec, change bw limit etc. > > justin: enable/disable bundle is one case > > adam:rejecting audio, getting video - is that with munging SDP? > > fluffy:no, if we have explicit API then don't use SDP mungling > > matthew:have a detailed set of cases > > fluffy:grouping of cases: > > fluffy:don't do RTCP mux via settings, not SDP > > matthew:ptime for codecs > > matthew:want to fix it > > matthew:will take my cases to the list > > [several people agree most things being discussed should be > done via other mechanisms than changing SDP] > > burn: nervous about limiting too much what in SDP can be > modified > > fluffy:changing SDP on the way between browsers can be done > flexibly, changing between create* and set* in the same browser > more limited > > justin:don't understand why there is big difference between > different manipulation "loops" > > fluffy:positive list of what can be changed is needed, not the > list of what can't be > > provide a list of changeable things that is *guaranteed* to > work > > matthew: errors need to be specific on what is wrong > > [argument over what the current spec (JSEP?) says...] > > burn: many kinds of modifications will be needed before sending > SDP out > > burn:what you send out does not match with what you set with > setLocal? > > <ekr> who was speaking? > > matthew:jsep-02 has fixed the ice password issue > > fluffy:need to have the use cases that motivate changes > > justin:needs coming up in the future anyway... > > how much and what state does createOffer create? devices with > HW codecs? > > <matthew> jsep-02 fixed the "createOffer is optional" language, > though whether or not createOffer creates state is true or not > is questionable > > <ekr> matthew: though, there's clearly an implication of that > b/c of the validity window of the offer. > > <ekr> i.e. during the callback. > > <matthew> indeed > > martin:set down the list of things that MUST be possible to > change > > burn:is everything else MUST reject? > > people have different interpretations... > > explicit list of things that MUST be changeable, explicit list > of things that MUST not be changed and what falls in between > the browser need to explicitly error report if it won't support > it > > <martin> there is a list of things that we MUST be able to > change; there is a list of things that MUST NOT be able to > change, which trigger an error; everything else the browser > MUST either accept or reject with an error > > <matthew> silent failure is incompatible with the assert on the > 2nd slide. either the browser fires an error (invalidating the > assert) or it is lying to you in order to make that assert. > > [the above three comments (markus, martin, matthew) try to > record the consensus in the meeting] > > AndyHutton: Configuration/settings? how do they relate to the > MUST, MUST NOT, ... > > fluffy:start with the list of use cases to get the > MUST-be-changeable list > > matthew:listing MUST-items... > > [cullen taking notes...] > > adam: we will have APIs for some of these things anyway > > fluffy:if we have an API to control what createO/A gives, is > that not enough, do we still need to change SDP for those > "features" > > justin, matthew: there may be cases where SDP change is still > needed > > fluffy: use cases are still not clear > > burn:do not worry about MUST-list anymore because anything on > the MUST NOT list can still work... > > still sensing consensus on having three lists: 1. MUST be > changeable, 2. MUST NOT be changeable, 3. (default) Browser > MUST give an error if it does not support it > > fluffy:next issue > > when can two different video flows use the same m-line > > Proposal: all codec parameters are the same, "content-label" is > the same, are in same MediaStream > > (hta, fluffy, martin debate the details) > > next: How does createOffer know to offer receiveOnly flow? > > want to receive video but don't have video camera > > justin has a proposal, mind to write it down here? > > matthew: can you put "send" in SDP before getting user consent? > > or do you first have to use receiveOnly and add sendReceive on > a separate O/A > > ekr: how do we correlate multiple offered video m-lines to the > multiple video streams the answerer has > > next topic: how does createOffer decide to offer a data > channel? > > should OfferToExchangeData constraint be added? > > matthew: data is a great idea, but SCTP is horrible. > > fluffy:take this to the IETF > > tim:SCTP was decided in Feb > > <ekr> matthew: how do you really feel about SCTP? > > DanD:data is easy within a single app, but trapezoid between > two apps is more difficult > > martin:issues could come also if the other device running the > "same" app has constraints > > consensus: don't add this constraint > > next: DTMF > > will be discussed tomorrow with a proposal > > next: How long is SDP from createOffer/Answer valid? > > matthew:90 seconds would be an ultimate timeout > > use case: the SDP is sent to the server for modification > > should it be valid beyond the duration of the callback function > > ice candidates etc. time out in matter of 10s of seconds > > hta: time-to-live for the session description? > > matthew:can createOffer be called again after getting the > modified SDP back from the server? > > matthew:proposes that createAnswer is valid only for the > duration of callback and no longer > > consensus: it must be valid at least for the duration of the > callback function > > ACTION: ekr to take follow-up to the list > > slides about rollback and error handling left for now > > (now lunch break until 1:30) > > Implementation status > > <fluffy> Cullen is scribing > > HTA is presenting what chrome is doing > > TURN and opus are scheduled to be in M24 all going well > > DTMF is waiting on this group > > Anant has a demo of firefox > > THe demo allows login, gives a list of users, then you can call > one of the other users > > Have getusermedia, have peerConnection, > > expectation to not have behind a flag in firefox 19 > > currently in firefox 18 in nightly builds behind a flag > > have a fairly complete version of the DataChannel > > showed cool file sharing with drag and drop using DataChannel > > THey have DTLS-SRTP > > ICE but no TURN > > prototype of Identity working > > Doing desktop first, then working on mobile > > VP8, opus, and G.711 as codecs > > HTA: There was a test web even 2 days ago > > dom: The idea of these is to get lots people to develop and > contribute test cases > > … presentation of theory of testing > > … Event led to 404 test cases > > General error handling principles > > ScribeNick: JimBarnett > > [13]Anant's slides on error handling > > [13] > http://www.w3.org/2011/04/webrtc/wiki/images/d/d1/TPAC_2012_WebRTC_error.pdf > > Anant: exceptions vs error callbacks. exceptions when you can > detect error without blocking the main thread. Covers only very > simple errors. In all other cases, error callback. So as > policy, favor error callbacks because they don't block the main > thread. > > Cullen: so lots of functions will do both? > > Anant: yes > > EKR: there's no way to get around exceptions occasionally. > > Tim: what do you do if you pass in something that is not a > function as the error callback? > > Cullen: there are things that you should never see in > production code, and those that have to be caught at runtime. > The former are programming errors. We're interested in input > errors. > > Anant: what goes in spec is a list of things that must be > exceptions and what should be callbacks. This will be the > result of consensus of browser implementations. > > Justin: so programming errors will be exceptions, bad SDP from > the other side will be an error callback. > > Anant: exceptions will be only for development. They shouldn't > occur in deployments at runtime. In exceptions should include > name and message, which all platforms support We should > standardize the names of exceptions, message can be > platform-specific, thought should be human readable. stack and > linenumber are useful where available. We will inherit from > Error object to make SDPErrorObject. > > ekr: we should create new attribute for SDP error, rather than > overloading linenumber. > > Anant: yes, having different names helps. We should standardize > on the ones that need to > be machine readable. Human-readable ones can be > platform-specific. > > Dom: W3C policy is to re-use existing names as much as > possible. > > Anant: we will use same object for error callback and > exception. So name and message must be present in object passed > to error callback. As with exceptions, human-readable > properties can be platform-specific. For SDP errors may want to > create a new property. Error callbacks should be mandatory. In > current spec, they're optional. That makes it easy to make > sloppy errors. If they're mandatory, at least you get an > exception if you forget to define the error callback. It should > never be the case that there's an error and nothing happens. > > ... In CreateOffer, exceptions: Invalid_callback, > invalid_constraints, invalid_state. > > Dom: these can be webIDL type mismatch errors. We don't need to > specify them separately. > > Anant: we can move invalid state to a callback (for cases where > app violates the state machine that we define.) So we won't > need to define any exceptions for (most?) functions. setLocal > and setRemote can have invalid_sdp as error in callback. Assume > that the success callback in set remote isn't called until the > description has been fully applied. > > Cullen: if have setRemote with provisional SDP and then later > will apply final SDP. Consider the case where are parsing SDP > and acting on it as you go along. Do you have to roll back? It > may be hard to do that. > > ekr: setRemote shouldn't generate callback until it's complete > and in correct state. > > Justin: we need a separate error to signal case that media > system is hopelessly busted. > > Cullen: we need two kinds of errors. Implementation will know > whether the situation is > hopeless or not. > > Harald: Invald SDP indicates that you have been able to > rollback, so it's not fatal. > > Cullen: when SDP fails a syntax check and no state has been > changed, as opposed to case where what you thought was a camera > turns out to be a mouse. > > ekr: there are cases where the error is reversible, but you're > still screwed. > > Harald: let's put Anant's proposal into the spec, and work out > some of these details later. > > Anant: we can leave the decision on which errors are fatal to > the UA. Further discussions of specific error cases on the > list. > > Dan: are error callbacks mandatory? > > Dom: sloppy programmers can always put in a no-op error > callback. On the other hand, if we make them mandatory, we will > have to include them in our examples. > > RESOLUTION: ERROR CALLBACKS ARE MANDATORY. Anant to update > spec. > > So decided that invalid_state will be a callback no exception > > <dom> [14]Error Types defined in DOM 4 > > [14] http://www.w3.org/TR/dom/#error-types-0 > > Decided that for SDP, will add a sdpLineNumber > > decided all errors callbacks will not be optional > > Call flows Walk-through > > Justin: when you call setLocal that's when UA starts gathering > ICE candidates. Get callbacks as each candidate is gathered, > another when all are gathered. If call createOffer before any > candidates are gathered, it will have just your local address. > > Justin: if you want to do trickle, have to get offer first and > then gather candidates. So must get getOffer callback before > all candidates are gathered. > > Cullen: what things can cause gathering to begin? What > indicates how many candidates to gather? How do you know when > you're done. > > Matthew: it has to be a settable parameter whether createOffer > callback can fire before you have enough candidates to produce > valid SDP. I don't like to get a success callback when the > offer is not valid yet. > > Cullen: one model is you can decide to wait until SDP is > complete. Or we can say that you get callback immediately, then > get another when you have all the candidates. > > Harald: must have ICE candidates to be valid. > > Cullen: but local address suffices for validity. > > Justin: in Jingle can send offer without any candidates and > it's fine. > > ekr: it won't work with SIP. > > Adam: we should have matching examples and callflows, including > trickle. > > Stefan: the Chrome implementation seems to work, with and > without trickle. So it should be our reference. > > Justin: we discussed calling createOffer and setLocal early to > start allocation, and then add streams later > > Cullen: we don't have mechanism for declaring dummy streams. > What if had new method: gather n candidates. > > Justin: that's like setLocal with empty m=lines. > > Cullen: calling app has pretty good idea of how many candidates > it will need. At least an upper bound. > > ekr: two proposals for pre-allocation: - a direct instruction > to peerconnection, or some sort of dummy SDP via createOffer > and setLocal. > > Cullen: we have 6 issues to discuss, all at least as big as > this. > > Harald: I'd like to get an overview of all the questions. for > this issue, we have two questions: how to know when SDP is > sendable, and how to do pre-allocation. > > Matthew: what happens with resource reservation? What happens > when you do all this gathering and find out that the camera > isn't available any more? > > Cullen: next issue. How does receiving side find out what's in > the offer, so that it can show the user: Alice is calling and > she wants audio and video. > > Matthew: when you call setRemote, you have no idea how many > times onaddstream will be called. > > Cullen: general model is a callback for each structure, and a > final callback saying that you won't get any more. questions: > when do you know that you've gotten all mediastreams? When do > you know you have all the tracks? When do the callbacks fire > with respect to the setRemote callback? > > ekr: at what point do side effects take effect w.r.t the > callback? I think it must be before. > > Justin: when does peerconnection.remotestreams get populated? > When you get a stream, the tracks should be filled in already. > > Matthew: parse them into the array, and then call > processingcomplete. > > Justin: how about a callback saying the remotestreams value has > changed? (It would be an array value, so this callback would be > called only once.) > > Adam: it's more convenient to get the new stream in the > callback, rather than having to parse the array to see what's > different. > > Justin: but it's important to know when the changes are > complete, rather than getting changes one at a time. > > State machines > > [15]Justin's slides > > [15] > http://www.w3.org/2011/04/webrtc/wiki/images/f/fa/WebRTC_States_v2.pdf > > <inserted> ScribeNick: martin > > juberti: [presenting on states] > > martin: does back to gathering happen for moving from "relay" > to "all"? > > juberti: you probably already have all the necessary candidates > > matthew: is there any way to remove candidates? > > juberti: ice restart > > ekr: can we have multiple components with one completed and the > other one with no candidates > > juberti: we are in checking until all components have resolved > > fluffy: checking encompasses frozen > > matthew: restart doesn't affect active flows > > juberti: yes > > matthew: why not just describe each of the states as they > relate to the underlying states > > fluffy: this is part of what I prepared for the last call on > this topic and we rejected that > > hta: there is no harm in playing audio while video is failing > and restarting > ... is there any difference betwen connected and completed? > > juberti: middleboxes might require the updated offer that would > be triggered from the completed transition > > martin: is this application driven or not, can the browser add > new candidates and contine? > > juberti: restart is required by RFC 5245 > > fluffy: the application is going to need to be involved > > juberti: if you get a new NIC (e.g. WiFi) you might just > trickle that > > hta: transitions to starting are tied to user actions > > martin: how does the new WiFi candidate fit into this? > > juberti: that would trigger a transition to connected > > fluffy: there is an implication that disconnected might > transition to failed, in the case where you were connected and > you disconnect then something failed > > juberti: proposes changing name of "starting" to "noo" > > <hta> IceConnectState -> IceConnectionState > > juberti: remove onicegatheringchange, and provide just > onicecandidate to fire when the gathering state is changed > > derf: propose to rename iceConnectState to iceConnectionState > or something > > * missed the name conclusion > > ekr: is this same as the other state machine, just with the > states merged? > > juberti: yes > > <hta> martin, name conclusion was to use IceConnectedState > rather than IceConnectState (I think - my ears are going) > > matthew: set...(answer) can't be done twice? > ... why isn't createOffer and createAnswer shown on the > diagram? > > juberti: once you set...(answer), you may have removed some > critical state for the offer, which invalidates some of the > answers > > Summary of Action Items > > [End of minutes] > > *************************************************************** > > [1]W3C > > [1] http://www.w3.org/ > > Web Real-Time Communications Working Group Teleconference > > 30 Oct 2012 > > See also: [2]IRC log > > [2] http://www.w3.org/2012/10/30-webrtc-irc > > Attendees > > Present > andy_hutton, adambe, hta, stefanh, derf, burn, > dan_druta, richt, anant, dom, juberti, jim, matthew, > ekr, fluffy, Magnus > > Regrets > Chair > Harald, Stefan > > Scribe > DanD, Juberti > > Contents > > * [3]Topics > 1. [4]Identity > 2. [5]API for removing streams > 3. [6]DTMF > 4. [7]Other business > 5. [8]What Triggers Candidate Fetching > 6. [9]When is SDP sendable? > 7. [10]Security for QoS labels > * [11]Summary of Action Items > __________________________________________________________ > > <trackbot> Date: 30 October 2012 > > Identity > > <dom> ScribeNick: DanD > > ekr presenting > [12]http://www.w3.org/2011/04/webrtc/wiki/images/f/f2/Idp-issue > s.pdf > > [12] > http://www.w3.org/2011/04/webrtc/wiki/images/f/f2/Idp-issues.pdf > > ekr: Three proposals on the list > ... Proposal 1 - Identity provided by gUM (Thomson) > ... Proposal 2: Prompt user after call (Ohlsson) > ... Proposal 3 - Site permissions with identity display (EKR) > ... Proposals 1 and 2 require the user to explicitly assent to > identity > > fluffy: How does the person answering the call who's calling > before answering the call? > > ekr: Long term consent > > Mathew: I like to setup the video selection and enable the > camera and the identity makes it complicated > ... easy to be done with proposal 1 > ... We need to make sure the browser does not get into the > address book without user's consent > > hta: I'm not happy with proposal 2 > ... when the green light go on > ... I have an origin that is not bound to an identity but later > get's bound > > ekr: Proposal 4 is a hybrid of 1 and 3 > > dom: I don't think we should use a null value for a parameter > with a different meaning as a parameter not being set > > ekr: I'm happy to use a different parameter name for option3 > > justin: There's a difference between site having access to the > camera and site recording > > dom: We're focusing too much on the green light where mobile > devices don't have a green light; I want to make sure we don't > build security on top of hardware indicators that are not > always available > > martin: the idea is to have an indicator in the chrome > > justin: there's confusion about what the green light means > > fluffy: we are adding to the confusion > > ekr: the green light (the indicator) is supposed to be on once > the camera is accessed > > hta: there is a issue when applications via USB can access the > green light > > martin: if it's on can drain battery without sending any data > > fluffy: expectation is that when camera goes on light goes on > > ekr: going over the proposed rule > > dom: I'm a little bit confused. if the indicator is in the > chrome I won't see it if I switch to a different app (on a > mobile phone); how does that affect the reliability of granting > access to a camera to a peer > > ekr: we should > > Mathew: will we be able to check for long term permissions? > ... action on ekr to write something up on tainted streams > > hta: suggest camera access as a topic for the other issues > later today > > API for removing streams > > hta: presenting what "remove" means > > fluffy: we should not look at index > > hta: either we don't remove the streams and you have a fixed > index > > adam: if we reference it by object even if it's removed from > the array I can still find it by object reference > > dom: this is what DOM is doing > > hta: in this proposal I have two methods to access: one by > returning all and iterate another one by name > > fluffy: why are we handing developers indexes when they can get > them by name > > dom: using index is not a bad thing as long as you don't assume > that what it refers to is immutable > > adam: I don't think you want to have the sequence because > developer can store the sequence and can change later > ... the msid draft has already a proposal how to name things > > hta: we need to decide if we want to get rid of the indexes and > go with the labels > > Mathew: legacy devices might not label > > Adam: we should go with ID's for both streams and tracks > > hta: we need somebody to write a proposal > > <martin> there seemed to be general agreement with Adam's > suggestion, namely assigning ids to every stream and track and > having label used only for human-readable text > > <dom> ACTION: Adam to update APIs to use mutable arrays of > streams in peerconnection with ids [recorded in > [13]http://www.w3.org/2012/10/30-webrtc-minutes.html#action01] > > <trackbot> Created ACTION-59 - Update APIs to use mutable > arrays of streams in peerconnection with ids [on Adam Bergkvist > - due 2012-11-06]. > > DTMF > > hta: presenting API requirements > > hta: proposal to have two new functions on RTCPeerConnection > > justin: I like the idea of having the callback with tone and > duration > > Martin: the proposal was to have a track (something that looks > like a track) > > hta: what's the factory for that track? > > Martin: you construct it > > hta: now you need to the go from the track to the > peerConnection > > Martin: you get the track from getUserMedia, you decorate it > for DTMF and attach to the peerConnection > ... on the receiving end it's simple > > hta: If I would be to implement where do I reliably place this? > > Fluffy: How do you know to negociate for DTMF? > ... another one is long tones use cases > > justin: you can emulate this with the proposal > > fluffy: I"m fine with getting rid of the long tones > > Stefanh: I like the proposal. I'd like more control on the > outgoing part > > burn: I think you can have the DTMF track be created by the > peerConnection > > justin: I support hta's proposal > > hta: I'll modify the proposal to incorporate burn's suggestion > > Other business > > hta: reviewing the collected items for discussion > > What Triggers Candidate Fetching > > Mathew: Use case is when a web page displays "call agent" . I > don't want all the visitors of the page to use my turn servers > > ekr: This should not be a problem > > hta: I don't understand why the use case is not satisfied > > Martin: you want to load the page and show as quickly as > possible > > justin: we have two mechanisms to control the candidates > gathering > ... you can do that now > > Martin: this brings us to changing constraints on the fly > > fluffy: we want to preallocate now were' talking about how to > do it in the API design > > justin: you would know what you need if you call setLocal > > fluffy: you can optimistically assume two > > Mathew: you got two use cases: the conference model where you > call in to a conference or the public page. We need to support > both efficiently > > fluffy: can we try to make a proposal > ... it's less elegant but should work > > justin: we can do this using setLocal > > fluffy: I have a different proposal. Have a constraint that > defines the preallocated streams > > ekr: it's fine for me > > hta: is this sort of creating a pool? > > fluffy: yes > > <martin> proposal is to add a new constraint > preallocateCandidates, which takes an integer value that > defaults to zero. setting this to any other value through the > constructor or updateIce triggers the filling of a candidate > set pool of that size. final actions are taken on > setLocalDescription > > hta: decision to go with the proposal to create a pool > > <martin> cullen will take an action to follow up on the last > issue (see my last item starting with "proposal") > > When is SDP sendable? > > <juberti> Next topic: when is SDP sendable > > <juberti> When do we know if we have all streams? > > <martin> my proposal for this was that the success callback > would fire, at which time the array^Wcollection would include > all the streams > > cullen: this doesn't let you know whether a stream was added or > removed. > > matthew: that doesn't work in all cases anyway; imagine calling > setRemoteDescription twice, the second time before all > callbacks have been received. > > cullen: on all functions that have callbacks, you can't call > the function again before the callbacks have dispatched. > > juberti: this would be setLocal, setRemote, createOffer, > createAnswer. > > ekr: what about getUserMedia? > > … should be possible to ask for multiple cameras. > > juberti: I have a proposal to handle the getUserMedia case. > > adambe: what about onaddtrack events? > > adambe: do we need onaddtrack when a stream is added? > > cullen: I read the spec, I think it says any time the remote > side adds a track, you need a callback. > > adambe: there's also an onunmute event on tracks too. > > adambe: how about only onaddtrack only when a stream is > updated, as opposed to added/removed? > > juberti: I like that proposal. > > cullen: I don't. > > martin: Let's address the stream callbacks first. > > hta: Let's do that. > > martin: setLocal, setRemote, createOffer, createAnswer should > all be non-reentrant. > > <fluffy> proposal is that that the createOffer / createAnser, > setLocal, setRemote, you can not call the same function again > if the callback from a previous invocation has not returned > > martin: during time between setRemote and callback, exceptions > should occur on any of these 4 APIs. > > martin: when you call setRemote, stuff will happen, but the > browser will return to stable state multiple times. > > <fluffy> On set remote, you install all the stuff, then does > does callback for onaddstream for each stream, then does > callback with null to on add stream, then it call the success > callback for set remote > > dom: do any other APIs do this? > > anant: in XHR, some things are disallowed while it is running. > > martin: during state transitions, no other transitions are > allowed. > > anant: you can't call open on the same XHR twice. > > stefan: might this introduce a timing problem? some browsers > are slower than others? > > dom: I don't think so > > cullen: I would guess that this is an atomic change, and it > takes some time - I would look at some API that has similar > needs > > dom: maybe IndexedDB > > jimbarnett: call should block instead of throwing exception > > adambe: if you get onrenegotiationneeded, that could cause a > problem > > cullen: onrenegotiationneeded fires after the success/error > callback, if needed. > > martin: queuing of calls could work OK. > > cullen: one lock across all 4 APIs. > > <timpanton> The way most UI APIs deal with this is to say that > those functions can only be called on the 'main' thread > > hta: proposal is: when calling one of these APIs - check args, > throw exception if needed, check lock, do work or queue task if > needed. > > <timpanton> if the callback is also invoked on the same thread, > this makes the thing queue naturally. > > hta: nobody argued for throwing an exception instead of > queueing. > > hta: anant to write up the details here. > > <dom> ACTION: Anant to write up queuing mechanism for > set{Remote,Local}Description, create{Offer,Answer} [recorded in > [14]http://www.w3.org/2012/10/30-webrtc-minutes.html#action02] > > <trackbot> Created ACTION-60 - Write up queuing mechanism for > set{Remote,Local}Description, create{Offer,Answer} [on Anant > Narayanan - due 2012-11-06]. > > <martin> callbacks have to be called on the same thread, there > is only one thread > > juberti: when does onaddstream fire? > > <timpanton> So how could you get re-entrancy ? > > hta: onaddstream fires after installation is complete, but > before the success callback has been dispatched. > > <martin> re-entrancy applies only in the sense that the actions > associated with the methods take time and so could > (conceivably, without these measures) operate in parallel > > burn: no add stream for failures, naturally > > <martin> the actions occur on browser-internal threads or "in > the network" > > <timpanton> ok. got it. > > juberti: when is pc.remoteStreams updated? > > adambe: before the first onaddstream callback is fired, > remoteStreams will be fully up to date with the changes. > > derf:<same thing> > > cullen: stream names are confusing. > > derf: event callbacks need to change to be less confusing. > > <dom> ACTION: Timothy to write up proposal for new stream event > names. [recorded in > [15]http://www.w3.org/2012/10/30-webrtc-minutes.html#action05] > > matthew: if SessionDescription is 3264 SDP, that SDP must > always be 3264-compliant. > > cullen: if you can't do local candidates, we should return an > error when trying to write SDP. > > matthew: will trickle update 3264? > > cullen: I think we'll need to. > > matthew: if we're doing trickle, we're going to need to update > something. > > matthew: how do we generate workable SDP when trickling? > > matthew: Chrome currently generates broken SDP? > > matthew: How do I get valid SDP in the non-trickle case? > > cullen: wait for ICE complete callback, then SDP will be fully > filled-in. > > matthew: but what about the initial setLocal? That SDP isn't > fully valid. > > juberti: That is just a subset of the trickle case. > > matthew: But the SDP still isn't valid. > > juberti: We are going to solve this with the trickle ICE I-D. > > … and then the rest of the stuff should fall into place. You > can call setLocal with an initial "no candidates" SDP, and then > gathering commences. > > hta: we'll refer this to the IETF rtcweb WG to figure this out, > and then we can resume this discussion. > > Security for QoS labels > > matthew: Want to see API where packet priorities can be set. > > hta: culler's proposal does this - gives 3 levels of > priorities. > > cullen: API that provides 3, 4, etc levels > > matthew: I don't know which one is more important. > > matthew: data could be above or below media (gaming, higher, > file transfer, lower) > > dand: where would this priority be set from an API perspective > > stefan: on a track or datachannel. > > <dom> there was a (currently abandonned) proposal for > setPriority on XHR that also had 4 levels FWIW > [16]http://ajaxian.com/archives/xmlhttprequest-priority-proposa > l > > [16] http://ajaxian.com/archives/xmlhttprequest-priority-proposal > > matthew: someone needs to write up a proposal for where these > things go. > > hta: set at initialization, or during the call? > > matthew: I think it could be initialization. > > dand: once we get this request, we need a confirmation from the > browser that it tried to accomplish this. > > martin: why? > > dand: this request can be fulfilled by going to a policy > server. > > matthew: I don't care about marking, I just care about the > congestion control prioritization > > matthew: not all packets will be labeled the same way > > matthew: either for different streams, or different packets in > the same stram > > hta: need to set priority levels, and have it per track, and > have 3 or 4 levels. > > hta: this will set congestion control/queuing in the browser, > and setting of QoS is something for further study > > matthew: cullen has already written a draft > > goran: cullen's draft refers to other drafts > > cullen: we will remove that reference. > > cullen: we don't want JS to set the diffserv code points, but > we do want it to be able to discover them. > > hta: want mapping from track to 6-tuple? > > <juberti> ACTION: Cullen to update draft to remove reference. > [recorded in > [17]http://www.w3.org/2012/10/30-webrtc-minutes.html#action06] > > <trackbot> Created ACTION-61 - Update draft to remove > reference. [on Cullen Jennings - due 2012-11-06]. > > Action. stefanh to propose priority API. > > <juberti> ACTION: stefanh to propose priority API. [recorded in > [18]http://www.w3.org/2012/10/30-webrtc-minutes.html#action07] > > <trackbot> Created ACTION-62 > > Adjourning for lunch. > > Summary of Action Items > > [NEW] ACTION: Adam to update APIs to use mutable arrays of > streams in peerconnection with ids [recorded in > [19]http://www.w3.org/2012/10/30-webrtc-minutes.html#action01] > [NEW] ACTION: Anant to write up queuing mechanism for > set{Remote,Local}Description, create{Offer,Answer} [recorded in > [20]http://www.w3.org/2012/10/30-webrtc-minutes.html#action02] > [NEW] ACTION: Cullen to update draft to remove reference. > [recorded in > [21]http://www.w3.org/2012/10/30-webrtc-minutes.html#action06] > [NEW] ACTION: stefanh to propose priority API. [recorded in > [22]http://www.w3.org/2012/10/30-webrtc-minutes.html#action07] > [NEW] ACTION: Timothy to write up proposal for new stream event > names. [recorded in > [23]http://www.w3.org/2012/10/30-webrtc-minutes.html#action05] > > [End of minutes] > > > > >
Received on Thursday, 15 November 2012 14:18:44 UTC