00:37:48 RRSAgent has joined #webrtc 00:37:48 logging to http://www.w3.org/2013/11/11-webrtc-irc 00:37:50 RRSAgent, make logs world 00:37:50 Zakim has joined #webrtc 00:37:52 Zakim, this will be RTC 00:37:52 ok, trackbot; I see UW_WebRTC()7:00PM scheduled to start 37 minutes ago 00:37:53 Meeting: Web Real-Time Communications Working Group Teleconference 00:37:53 Date: 11 November 2013 00:38:22 fluffy has joined #webrtc 00:38:31 Zakim, call Wuzhou_Middle 00:38:31 ok, dom_web; the call is being made 00:38:33 UW_WebRTC()7:00PM has now started 00:38:33 +Wuzhou_Middle 00:39:04 Meeting: WebRTC TPAC F2F Day 1 00:39:12 Chair: stefanh, hta 00:39:33 Agenda: http://www.w3.org/2011/04/webrtc/wiki/November_11_-_November_12_2013 00:41:08 frodek has joined #webrtc 00:45:11 dom has joined #webrtc 00:45:32 adam has joined #webrtc 00:47:12 adam are you in the room here ? 00:47:22 Or dan ? 00:47:27 Which Adam? 00:47:37 Bergkvist 00:47:48 I am not Adam Bergkvist. 00:47:54 ack 00:48:33 dom_ has joined #webrtc 00:48:34 If someone see Adam Bergkvist, or Dan Burnet, can you get them to ping me - thanks Cullen 00:49:07 rbarnes has joined #webrtc 00:49:27 Zakim, who's on the call? 00:49:27 On the phone I see Wuzhou_Middle 00:49:49 martin_ has joined #webrtc 00:50:02 thanks dom 00:50:12 burn has joined #webrtc 00:50:54 ekr has joined #webrtc 00:53:13 elagerway has joined #webrtc 00:53:46 robinraymond has joined #webrtc 00:54:19 hta has joined #webrtc 00:58:57 +??P3 00:59:22 silvia1 has joined #webrtc 00:59:24 dom has joined #webrtc 00:59:54 you guys do not sound good 01:00:21 -Wuzhou_Middle 01:02:04 dom_web_ has joined #webrtc 01:02:09 stephane has joined #webrtc 01:02:45 Zakim, call wuzhou_middle 01:02:45 ok, dom_web_; the call is being made 01:02:46 we are not hearing anything , is someone talking into polycom ? 01:02:47 +Wuzhou_middle 01:03:09 -Wuzhou_middle 01:03:14 Zakim, call wuzhou_middle 01:03:14 ok, dom_web_; the call is being made 01:03:15 ok 01:03:16 +Wuzhou_middle 01:03:46 Zakim, call wuzhou_middle 01:03:46 ok, dom_web_; the call is being made 01:03:47 +Wuzhou_middle.a 01:04:21 can you keep talking for abit 01:04:31 we are getting audio, but it's ugly 01:04:37 -Wuzhou_middle 01:04:56 ok - how is poly com connected to PSTN 01:05:09 it's not good at this end 01:05:33 burn: you sound fine 01:06:51 the gap between 1 and 2 was about 8 seconds 01:07:05 and then the room burst out laughing. 01:07:54 stefanh has joined #webrtc 01:08:12 so if you give us the actual phone# for the room, we can dial that into the hangouts. 01:08:33 can you get us the phone number for polycom 01:08:48 now we go here -> hangouts -> zakim -> polycom 01:09:40 Marcus_Altman has joined #webrtc 01:09:41 dom has joined #webrtc 01:10:00 http://xkcd.com/257/ 01:10:27 droh has joined #webrtc 01:10:48 adambe has joined #webrtc 01:12:02 jesup|laptop has joined #webrtc 01:12:09 kotakagi has joined #webrtc 01:12:14 jinkyu_seong has joined #webrtc 01:13:52 936972 ? 01:13:54 juberti has joined #webrtc 01:14:29 mreavy has joined #webrtc 01:14:33 last minutes: http://lists.w3.org/Archives/Public/public-webrtc/2013Sep/0018.html 01:15:20 http://www.w3.org/2011/04/webrtc/wiki/images/8/8c/W3C_TPAC_2013_ICE_Issues.pdf 01:15:46 dom_ has joined #webrtc 01:15:50 stephane_ has joined #webrtc 01:15:50 juberti has joined #webrtc 01:16:00 DanD has joined #webrtc 01:16:12 RRSAgent, draft minutes 01:16:12 I have made the request to generate http://www.w3.org/2013/11/11-webrtc-minutes.html dom_ 01:16:23 Topic: ICE 01:17:22 Dan has joined #webrtc 01:17:34 -> http://www.w3.org/2011/04/webrtc/wiki/images/8/8c/W3C_TPAC_2013_ICE_Issues.pdf ICE Issues slides 01:18:18 yahui has joined #webrtc 01:18:19 on slide 3 01:18:52 EKR asked what the number for pool size should be, Just said app can put any number it wants in and this is the recommended aproach 01:19:31 fluffy: many applications won't need this 01:19:39 AndyF has joined #webrtc 01:19:52 we're not locally chitchatting, we're discussing the question 01:19:56 richt has joined #webrtc 01:20:26 bo_hu_ChinaUnicom has joined #webrtc 01:20:38 richt_ has joined #webrtc 01:20:42 OK 01:21:50 q? 01:22:00 q+ 01:22:01 please no local chitchat in shenzhen 01:22:56 For the record, I'm good with the decision to do nothing special about rtcpmux, requiring it or not. 01:23:12 So the conclusion was that this is OK. 01:23:12 richt__ has joined #webrtc 01:23:28 dom, it's impossible to scribe on this side either - it's just back and forth too fast 01:24:54 alexG has joined #webrtc 01:25:33 Key point for minutes, as long as PC is alive, it will keep the candidates in the pool "warm" so they work when needed 01:25:33 question here was whether the candidates will be kept warm, and Justin says yes, which means heartbeats 01:25:42 juberti: The idea is that this pool is pre-allocation, and everything else remains the same. 01:25:44 Browsers will need to maintain a cap 01:25:47 Key point for minutes, might need some sort of cap 01:26:03 derf will try to scribe 01:26:07 juberti: We probably need to specify some kind of cap, but it's your TURN server and if you want to pound it... 01:26:25 martin_: If you think about the case where you have 100 lines and try to start cold, it's just not going to happen in any reasonable time. 01:26:35 juberti: We should just decide what's a reasonable maximum. 01:26:43 martin_: I think I'd be happy with the browsers doing that. 01:26:50 juberti: But we should provide some recommendations. 01:27:07 fluffy: If it's just something like 50 or 100... 01:27:13 adam: 100 ports on your NAT? 01:27:18 fluffy: Google maps does that all the time. 01:27:19 cullen: yes 01:27:32 hta: I have seen the logs from bittorrent... 01:27:49 ekr: TCP has a different set of properties, because it does not need to allocate a port that's shared between every remote guy. 01:28:01 ekr: We specifically advise people to do that on their NATs, so it's not the same. 01:28:05 derf: do you want help scribing? 01:28:14 fluffy: We're just talking about the size of the pool. 01:28:21 GangL has joined #webrtc 01:28:30 martin_: Keeping in mind if the pool is 1, more ports will be allocated when SetLocalDescription is called, it just won't be very fast. 01:28:31 jeromemarcon has joined #webrtc 01:28:34 martin_: So why do you need more than 5? 01:28:36 dopi has joined #webrtc 01:29:04 juberti: I'm not sure it buys us anything to have the limit be less than could be allocated by SLD. 01:29:14 ekr: I agree those limits should be the same. 01:29:25 juberti: We should just set some number that's bigger than the largest reasonable use case. 01:29:27 it is difficult to break in from here, but it seems reasonable to have a limit 01:29:41 we can institute queue discipline if needed 01:29:43 fluffy: I think it's more in the order of the magnitude of 50 than 5, and certainly not 5,000. 01:29:53 hta: I would suggest that juberti pick a number and we can debate on the list. 01:30:00 juberti: I would like Cullen... 01:30:05 fluffy: I'll take an action to pick a number. 01:30:15 tcai has joined #webrtc 01:30:24 adam: I presume that maximum is per page, per browser...? 01:30:30 ekr: It has to be per browser because of shared origins. 01:30:46 fluffy: There are certainly people who want to use the data channel with hundreds of origins. 01:30:46 Wuyan has joined #Webrtc 01:31:05 juberti: We should take an action to figure out what the security implications are. 01:31:09 make sure to consider multiple cameras connecting to multiple peers and doing call forwarding in the browser, so there may be more than you think 01:31:50 ekr: Is it encouraged for an implementation to start gathering on addStream if they know the number of candidates? 01:32:25 martin_: Do that... the only thing we really need to say is what the measurable outcomes are, which is that candidates get given to you after SLD. 01:32:28 ekr: Uh, no... 01:32:30 martin_: Why? 01:32:36 +[IPcaller] 01:32:42 ekr: Let juberti finish his presentation. It's on the last slide. 01:32:44 -[IPcaller] 01:32:54 derf: negative, at the end of this slide 01:33:08 s/on the last/at the end of this/ 01:33:34 juberti: The way the spec is currently written candidate gathering doesn't start until first SLD. 01:34:14 JimBarnett has joined #webrtc 01:34:20 stefanh: How long will these candidates be alive if you create the PC and do nothing with it? 01:34:35 juberti: We'll keep them alive until that PC is garbage collected, because there's no way to know when you'll be done with them. 01:34:45 adam: I have this on my slides. Our proposals are remarkably similar. 01:34:59 ekr: I have two concerns vis a vis CreateOffer and CreateAnswer don't have candidates. 01:35:20 ekr: There are lots of cases where candidates are available---any renegotation---and it's silly to gather new candidates when they're available. 01:35:36 +Jim_Barnett 01:35:39 ekr: The other reason is that Firefox does it this way, and I don't see any reason to do it another way. 01:35:52 juberti: If I ask for 10 ports, how do you know there's 10 sitting aroudn? 01:36:00 ekr: We have a list of what's sitting around. 01:36:12 adam: If you ask for 10 and there's 4 sitting around, we return 4 and trickle the rest. 01:36:32 juberti: I have no problem with that. An application MAY return candidates in the initial offer, it also may return zero and trickle them all. 01:36:43 martin_: I have some issue with gathering candidates after SetLocal. 01:36:55 So key thing for minutes, on createOffer, if you have candidates in pool, you use them and return in createOffer but whatever ones you do not have you trickle later 01:37:33 martin_: If you ask for 4 and the browser has 10, is there any reason it can't return more if you really need them? 01:37:47 juberti: I don't think it's a good idea to add TURN candidates the application didn't ask for. 01:37:55 adam: I don't think this is an interoperability issue. 01:38:22 juberti: When you have a very, very good indication that you're going to need this right away, like addStream... but if you did it speculatively then a TURN server load might increase unexpectedly. 01:38:48 fluffy: Given our default posture that you sort of need 4 ports or 5 ports, I wouldn't want to limit the browser to not go ahead and gather those... 01:38:54 juberti: I think our default is 0. 01:39:16 juberti: A certain large social network told us that TURN usage is their largest bottleneck. 01:39:22 juberti: It's not CPU, it's bandwidth. 01:39:32 adam: Holding a port open is not going to consume bandwidth. 01:39:41 jesup: I think there is an advantage to starting to spin those up. 01:39:59 juberti: We can leave it up to browser discretion, but if we provide a knob, we should rely on that instead of trying to make decisions for the application. 01:40:01 BaopingCheng_CMCC has joined #webrtc 01:40:14 hta: That raises another question with a constraint... do you set an upper limit, a lower limit, or both? 01:40:28 juberti: I think you should not be getting more than this. If you set a local description that requires more, then you gather more. 01:40:41 Keeping a port open will not consume BW, but we have the batery issue: on a mobile device it would consume battery 01:40:44 hta: If the browser would normally prefetch 5 just in case, and you set the constraint to 3, should it gather 3 or 5? 01:40:49 adam: I think it should be 3. 01:41:03 adam: Because it indicates the application knows what is about to happen. 01:41:08 yusuke_ has joined #webrtc 01:41:25 juberti: The code works the same way regardless of whether this is implemented or not implemented, it's just faster. 01:41:33 juberti: But it prevents unnecessary TURN server load. 01:41:53 juberti: If you really care about things like this, you'd probably think about having a way to say RTCP-mux only, so you only have to gather 1 candidate. 01:42:10 hta: The way you would specify it would be to give a promise that if you don't get RTCP-mux back, you'll close the connection. 01:42:17 juberti: I don't understand how that follows. 01:42:35 hta: If I say RTCP-mux required and I'm talking to someone who doesn't understand it... 01:42:42 fluffy: Then you just don't sent RTCP. 01:42:52 martin_: As Hadriel has pointed out, you can get this stuff to work. 01:42:55 fluffy: I know, I know... 01:43:44 We have muted the phone here and are experimenting with adding hangoutns 01:43:45 fluffy: I do think the RTCP-mux issue is completely independent of this one. 01:43:52 fluffy: We should have an argument about it someday, but not now. 01:44:19 goodbye 01:45:30 Travis_MSFT has joined #webrtc 01:47:57 ok 01:48:05 Travis_MSFT: we're messing with connectivity. 01:48:12 -??P3 01:48:16 Please raise that again in a minute 01:49:08 dom, you have to unmute 01:51:29 Seattle, could you back one Zakim? 01:51:38 That seems like better for the audio 01:51:47 We don't hear you now 01:51:51 +??P3 01:52:00 jeff has joined #webrtc 01:53:27 leckie has joined #webrtc 01:54:13 Are we ready to continue? 01:54:58 juberti: Slide 4, candidate pool continued... 01:55:07 juberti: We had a lively debate about what exactly the constraint should do. 01:55:24 juberti: The general things I heard were that this should be, at least for non-host candidates, the maximum number of things to pre-gather. 01:55:43 juberti: But if CreateOffer wanted to return these candidates plus other host candidates, that would be okay. 01:56:02 adam: But if the browser saw the need for other candidates because of addStream calls, etc., it could return more. 01:56:24 juberti: If addStream is called we could add another 1 or 2 because of RTCP-mux then the browser could return more candidates... 01:56:41 adam: If they're available when CreateOffer is called. 01:56:49 martin_: Unless BUNDLE-only is set. 01:57:02 adam: Yeah, then you don't need to add more, but that's simple to do. 01:57:18 burn: We're just talking about pre-gathering, not the final candidates to gather, right? 01:57:34 juberti: I think the boost is fairly nominal, but there's no reason not to do it. 01:57:38 DanD has joined #webrtc 01:57:46 martin_: The other one to think of is OfferToReceiveVideo/OfferToReceiveAudio... 01:57:51 adam: You're reading my slides now, aren't you. 01:58:06 ken_ has joined #webrtc 01:58:07 +1 to the idea (fluffy also +1'd) 01:58:14 martin_: Pretend that someone had added those candidates as if they'd added a stream. 01:58:25 fluffy: Can we table that? 01:58:32 chairs: we need a clearer description of how to offer to receive >1 audio/video 01:58:33 adam: The OfferToReceive? 01:58:45 fluffy: How we extend the constraint beyond being true/false. 01:58:49 Adam suggests that OfferToReceive{Audio|Video} be made an integer 01:58:49 adam: Integer. 01:58:52 fluffy: Thumbs up. 01:59:04 martin_: Does anyone have a problem with an integer? 01:59:17 ekr: I'm not sure because of receive-only vs. receive. 01:59:26 hta: Okay, let's add that later in the agenda so we have a little time to think about it. 01:59:30 juberti: On to slide 5... 01:59:35 juberti: When does ICE end up in the completed state? 01:59:38 the integer represent the number of ...? m= lines? 01:59:47 adambe: I have a question on this new constraint. 02:00:33 juberti: Previously there's no way to change this after you create a PC, and now you can. 02:00:47 juberti: What happens if you change it from 4 to 8, etc., but I think that's probably pretty predicatable. 02:01:03 martin_: What happens if you set it to 8, call CreateOffer so you're using all of the 8, and now you set it to 10. 02:01:08 martin_: Are you asking for 2 more? 02:01:41 juberti: adambe was saying everyhing has this constrainable interface where all of this can be changed on the fly. 02:01:44 adam: Really? 02:02:05 q+ 02:02:08 adambe: Did you consider putting this into the options dictionary where we have the ICE URLs which are only set once? Then it would only be set once. 02:02:13 juberti: I understand where you're going with that. 02:02:15 Q+ 02:02:39 ekr: The notion that you can just change anything that was passed in as a constraint at any time is going to cause huge problems with things like the TURN servers. "Oh, the TURN password just changed..." 02:02:48 juberti: That's kind of what adambe was getting at. 02:02:53 ekr: Sold. 02:03:07 martin_: Do we have any objections to that course of action. 02:03:13 adam: I didn't understand it. 02:03:37 Proposed Action , adam to move the pool size from the constrains but instead put it into the turn server configuration 02:03:38 juberti: There's two parameters to creating the PC, one of which just holds the configuration options for the TURN servers, and we can just stick it in there. 02:03:41 adam: +1 02:03:53 juberti: I assume this will just be a nullable property. 02:04:00 martin_: It's a dictionary, they're always nullable. 02:04:12 fluffy: I'm proposing we don't even need a proposal. If we're all agreed upon here, adambe should do it. 02:04:33 BTW, adambe: you need to remove all those '?' characters from the dictionaries. 02:04:33 Action adam: Move ICE candidate count from constraint to RTCConfiguratoin. 02:04:34 Created ACTION-87 - Move ice candidate count from constraint to rtcconfiguratoin. [on Adam Bergkvist - due 2013-11-18]. 02:04:40 juberti: Why did we ever think it was a good idea as a constraint? 02:05:01 Action adambe: Remove '?' characters from all dictionaries. 02:05:01 Created ACTION-88 - Remove '?' characters from all dictionaries. [on Adam Bergkvist - due 2013-11-18]. 02:05:11 JimBarnett: I just want to point out that the language of the constrainable interface allows for constraints that can't be changed. 02:05:21 juberti: That's good, because that avoids the issues ekr was concerned about. 02:05:36 hta: If we want constraints to be unchangeable or changeable, we'd better specify that. That's another issue. 02:05:47 JimBarnett: Yes, that would be part of the definition of the property. That cannot be changed. 02:06:11 JimBarnett: There might be many reasons it might not be able to find a value, including that it's already been set and can't be changed. 02:06:30 burn: I don't understand what you mean by a constraint that can't be changed, but the other part of constraints is that you may not get what you ask for. 02:06:45 juberti: I didn't get a sense that the issue of these constraints that can't be changed was resolved. 02:06:53 hta: But it's not an ICE issue, so we should move on. 02:07:03 juberti: When is ICE done? 02:07:30 juberti: 02:07:33 AndyF has joined #webRTC 02:08:15 juberti: When can the controlled side know, if there's no updated offer, that the controlling side is done? 02:08:27 martin_: The easy solution is that when you get the TLS finish message, you know where you're going. 02:08:49 juberti: No, because as soon as you get TURN going you'll be trying to get DTLS up as fast as possible, but you might be trying to get host candidates or STUN candidates up later. 02:08:51 q+ what would happend if you had a device with a slow wireless connection and a fast wired connection? 02:08:58 martin_: Or you might change your mind. 02:09:05 juberti: That's what I want to get to in the next slide. Why do we care? 02:09:12 juberti: There's a couple of answer. 02:09:23 juberti: On the controlling side, it may want to send the updated offer with the real candidates. 02:09:36 q+ what would happen if you had multiple local interfaces? 02:09:36 juberti: The controlled side doesn't need that, it just needs to know when to release candidates that aren't going to be used. 02:09:39 juberti: And it can just wait. 02:09:42 martin_: Consent. 02:09:50 juberti: Consent is not going to be on every single candidate pair. 02:10:07 martin_: You just stop doing the refresh stuff and consent will expire after 30 seconds of not getting packets from the other side. 02:10:07 chris has joined #webrtc 02:10:19 q+ 02:10:22 q? 02:10:24 q- 02:10:27 q- 02:10:28 q- 02:10:37 juberti: It's up to the implementation to decide which connection to use, and it should already do interface prioritization. 02:10:51 juberti: The interesting case is the reverse, where you'd have to use something like RTT... 02:10:56 martin_: Or PCP, but that's an IETF issue. 02:11:08 juberti: Or something that has a low RTT until you start using it and then it has a high RTT. 02:11:13 fluffy: See connection to China right now. 02:11:16 juberti: We're familiar with that. 02:11:21 fluffy: There's no great win here. 02:11:27 juberti: This is just an implementation issue. 02:11:38 fluffy: Every implementation I've seen, at some level or other, at the bottom there's a timeout. 02:11:51 q+ to say what happens when you have multiple local interfaces 02:11:57 adam: In most browser-to-browser cases it's the same application on both sides, so if it really cares, it sends a message that says it's done. 02:12:02 Marcus_Altman has joined #webrtc 02:12:02 q+ 02:12:33 q+ 02:12:38 ack andyF 02:12:38 AndyF, you wanted to say what happens when you have multiple local interfaces 02:12:41 q- 02:14:04 DanD has joined #webrtc 02:14:18 the IETF has a whole working group on Multiple Interfaces 02:14:19 hta: That's an ICE question. 02:14:26 juberti: I think there's two different things being discussed there. 02:14:36 juberti: One is the size of the candidate pool, and one is the number interfaces. 02:14:43 And ICE already deals with local interface prioritization effectively 02:14:47 juberti: And there isn't really any limit to the number of interfaces. 02:15:07 juberti: This is the number of candidate sets to pre-gather, but it will pre-gather for every single interface that you have. 02:15:16 TonyKuo has joined #Webrtc 02:15:17 q? 02:15:31 ack martin_ 02:15:51 martin_: The point that I was going to make was that the controlling side can simply stop sending on candidate pairs that it doesn't want to keep warm, which would mean that consent would expire on the controlled side over time. 02:16:04 Qiuling has joined #webrtc 02:16:05 martin_: 30 seconds... allowing it to clean up most of them, there's some ambiguity there... 02:16:22 martin_: But if the controlled side is just keeping candidates that have consent warm, then at some point it will clean them up. 02:16:47 juberti: That's like what I was thinking, but I'm not sure that consent is the right thing, because you're not going to be getting consent on every pair. 02:16:50 taocai has joined #webrtc 02:17:04 juberti: I'm just thinking maybe we're using the word consent in different ways. 02:17:21 juberti: As the process moves forwards you're going to be sending connectivity checks, and at some point stop doing them. 02:17:28 juberti: But I don't think that's the same thing as consent. 02:17:32 martin_: We need to talk about consent. 02:17:32 q+ 02:17:41 hta: Who's got the token on consent because I think it's an IETF issue. 02:17:59 martin_: It is an IETF issue. I think there's enough information on the controlled side for it to release the pairs. 02:18:03 q- 02:18:16 juberti: If you ping on something other than the active one, does that establish consent? 02:18:20 fluffy: On that one. 02:18:25 q- 02:18:25 juberti: So it's consent per 5-tuple? 02:18:38 jeff_ has joined #webrtc 02:18:47 hta: The consent for STUN draft has 4 editors from Cisco. Can you make sure they're told they'd better specify where this threshold lies? 02:18:57 fluffy: I think there's a much better solution to this problem of four editors from Cisco. 02:19:09 martin_: I've been talking to Dan and this document is going to get a rewrite. 02:19:14 juberti: I volunteer to help with that document. 02:19:19 martin_: I've already made that offer as well. 02:19:28 fluffy: Sync up with me and I will facilitate a change of editors. 02:19:29 s/where this threshold lies/on what pairs consent should be sent/ 02:19:33 ekr: It's using a binary request, still? 02:19:35 juberti: Yes. 02:19:49 ekr: From the recipient side there's no way to distinguish between a continued one and a regular one. 02:20:06 ekr: Any candidate pair that you have not received any STUN check on for some period of time, you assume it will be dead. 02:20:23 martin_: The controlling side will stop responding, and at that point it no longer has consent. 02:20:34 martin_: If you want to open that again you need a new ufrag and password. 02:20:40 fluffy: That time is 30 seconds? 02:20:47 juberti: That's the exact value we use. 02:21:20 ekr: 02:21:24 martin_: Let's take this offline. 02:21:29 derf: chicken chicken chicken 02:21:30 hta: I definitely think this is an IETF issue. 02:21:41 fluffy: Who are the people we think know the answer to that issue? 02:21:44 martin, ekr, justin, dan will sort it out. 02:21:48 martin_: Myself and juberti. 02:21:56 ekr: The same people who failed to address this last time. 02:22:02 ekr: This time we'll assign martin_ to do it. 02:22:08 juberti: The controlling side there's no question. 02:22:08 action martin_: Drive IETF discussion to decide where consent will be sent. 02:22:09 Error finding 'martin_'. You can review and register nicknames at . 02:22:31 action martin: Drive IETF discussion to decide where consent will be sent. 02:22:32 Created ACTION-89 - Drive ietf discussion to decide where consent will be sent. [on Martin Thomson - due 2013-11-18]. 02:22:49 juberti: On the controlled side, if there's an updated offer, it will move from connected to completed, but that's not that interesting. The application could also send a message, but that wouldn't move the state machine forward, or we could do this implicitly, using these timeouts. 02:22:58 ekr: That sounds provisionally okay but I'd like to hear the outcome of martin_'s proposal. 02:23:06 juberti: Moving on to the next slide. 02:23:20 I would like to be involved in the ICE discussion 02:23:51 juberti: I think the next slide is going to be uncontroversial... I've said that many times before. 02:23:55 juberti: ICE restart. 02:24:20 juberti: ICE restart is in the current editors' draft. 02:24:45 juberti: The basic mechanism is that if you specify the IceRestart constraint to CreateOffer, the returned description has new ICE credentials. 02:25:07 juberti: Similarly if you receive a description with new credentials, this forces a restart. 02:25:18 juberti: The actual restart is triggered by setLocalDescription. 02:25:50 ekr: If I call createOffer _twice_ with the same constraint inbetween, do I get the same ufrag and password or a new one? 02:26:06 juberti: createOffer isn't supposed to change anything. 02:26:13 ekr: But I don't want to keep a stack of these. 02:26:33 juberti: I'm not sure I'd be happy with saying there'd only be one outstanding offer ever. 02:26:50 ekr: I'd agree with that generally, but this is a special case, because I need to validate that these values are valid. 02:27:05 ekr: Generally, if I call createOffer repeatedly with no other actions inbetween, I'd expect to get the same answer back. 02:27:20 ekr: But if one possibility is to create a new set of values every time, then I'd have to look backwards to see if they're valid. 02:27:29 juberti: As long as they're different from the current state, then it's fine. 02:28:04 juberti: We start with ufrag 0... 02:28:14 fluffy: Just type it into the minutes because everyone's going to agree with you. 02:28:38 CreateOffer() --> A 02:28:56 adam: If I've given you different ufrags each time, I want you to forget about all the ones I've given you and only use the most recent ones. 02:29:04 juberti: In this particular case I think that'd probably be fine. 02:29:08 juberti: Generally it seems kind of ugly. 02:29:18 ekr: I'm not making a general statement. 02:29:28 juberti: I'm thinking we could generate some kind of HMAC... 02:29:40 ekr: We could do that too, and allow any previous ones to be acceptable... 02:29:53 resolved: setLocalDescription() only succeed with the result of the most recent CreateOffer() 02:30:03 ken has joined #webrtc 02:30:16 juberti: And if someday it turns out there's a scenario where this matters, then it's trivially fixable. 02:30:24 implementatons may generate the same ufrag/password repeatedly with multiple CreateOffers as long as there is no SetLocalDescription() has been called repeatedly 02:30:31 stefanh: How could you know if SetLocal comes from that CreateOffer or it's something you just generated. 02:30:35 ekr: Because we memorize it. 02:30:49 ekr: It's an ICE security requirement to only accept ufrags and passwords that were generated interally. 02:30:57 stefanh: But you could also change lots of other stuff in the SDP. 02:31:01 ekr: Lots of stuff, but not this. 02:31:11 martin_: Passwords, maybe not, but ufrags... 02:31:21 martin_: Ufrags, you can't change them, but passwords, maybe... 02:31:29 s/maybe not/maybe/ 02:31:49 fluffy: What you're really getting at here is that we should use DTLS and not ICE for consent. 02:31:57 martin_: You're about 3 seconds too slow, I'm about to hit send on the e-mail. 02:32:00 ekr: Heartbeat? 02:32:01 martin_: Yeah. 02:32:08 action: erescorl to sit down with Justin and Martin and work through whether ICE ufrag/passwords need to be internally generated in the face of DTLS 02:32:08 Created ACTION-90 - Sit down with justin and martin and work through whether ice ufrag/passwords need to be internally generated in the face of dtls [on Eric Rescorla - due 2013-11-18]. 02:32:17 adam: JSEP currently has this as a big open issue. 02:32:48 juberti: So, we just talked through the behavior if you call createOffer with ICE restart multiple times, sounds like we got that mostly figured out. 02:33:05 juberti: The other thing is that ICE restart restarts for all m-lines. 02:33:27 juberti: There's no way to restart for all m-sections, and not just one m-section, but since ICE restart is harmless to existing media streams, I don't see this as a problem. 02:33:33 ekr: If it fails, what are the O/A implications? 02:33:40 juberti: The ICE restart? I'm going to talk about that. 02:33:56 we are not on slide "ICE Restart Cutover" 02:34:02 juberti: The general way ICE restart works is that it's make-before-break, which means you keep your current candidate pair hot until you have a new candidate pair ready to move over. 02:34:03 s/not/now/ 02:34:22 ekr: What about partial success? One m-line's on the new candidates, and one m-lines on the old candidates. 02:34:41 juberti: That's an interesting point, I was sort of assuming it would happen on a per-component level, that the ICE restart wouldn't complete until it could cut them alll over... 02:34:56 martin_: The reporting of that is interesting... 02:35:03 juberti: Yeah, I talk about that here. 02:35:13 fluffy: Walk me though the use case were this happens. 02:35:33 juberti: The main use case is you're in a call and some NAT falls over and some packet timer expires at 5 seconds. 02:35:50 juberti: Then you make a new createOffer and stuff it into setLocal and are now gather new candidates. 02:36:23 juberti: The remote side calls createAnswer which starts gathering new candidates in setLocal, and as soon as that completes we can start sending media on the new set. 02:36:30 martin_: And this might only apply to some paths. 02:36:59 fluffy: My general strategy on this is you have a valid O/A pair and you send a new offer, then you have to be willing to keep receiving on the old ones, and this is very consistent with that. 02:37:11 jesup: You might also invoke this if the current path degrades to find a better path. 02:37:25 juberti: Yup, this could happen in IP handover situations to, you walk out the front door and now you're on 3G. 02:37:38 ekr: This sounds generally sound to me, but we need to walk through the various edge cases. 02:37:58 ekr: The videos on candidate pairs from the first handshake and the audio's on pairs from the second handshake and vice vesa. 02:38:03 ekr: What happens if things fail? 02:38:19 ekr: In the simple case the whole thing fails. What happens if one component fails and one does not, how do I back out? 02:38:39 hta: This sounds like something that's really IETF protocol, and I think we're more or less ready for a coffee break. 02:38:44 juberti: Let me go over the last bullet. 02:38:58 juberti: If you do the ICE restart and it doesn't get you back to the completed state, it's really up to the app. 02:39:08 juberti: Since it's make-before-break you might still be partying on. 02:39:34 juberti: So it's really up to the app, and if you don't get to the completed state, it might decide I don't know what to do here, I'm just going to end the call, but that generally puts it in the app's hand. 02:39:45 juberti: Are there any salient points we want to capture for a sidebar? 02:40:10 hta: The important thing for the W3C state machine is that gathering-state changes back to gathering, connected-state goes from completed back to connected. 02:40:19 ekr: How does the controlled side know that he's completed? 02:40:29 martin_: Because he's going to receive an updated offer... 02:40:33 ekr: That's a reach. 02:40:59 juberti: The point is that you are the controlled side, you didn't get an updated offer originally, now you get an ICE restart, the only way you know is that the gathering state went back to gathering. 02:41:09 ekr: If you end up with default candidates you never get an updated offer. 02:41:30 TonyKuo has joined #webrtc 02:41:32 juberti: Even if the candidates would match the defaults candidates, there's still a recommendation you send this offer for the benefit of middle boxes. 02:41:45 richt has joined #webrtc 02:41:49 juberti: Though if someone told me there was something in the ICE spec that wasn't actually used for anything... 02:42:04 juberti: I think the main thing is that if the gathering state changes that means you must be doing an ICE restart. 02:46:22 kotakagi has joined #webrtc 02:51:42 -??P3 02:53:16 chris has joined #webrtc 02:56:45 Marcus_Altman has joined #webrtc 02:59:35 rbarnes has joined #webrtc 03:02:54 we are ready to start 03:03:32 yusuke_ has joined #webrtc 03:03:36 zakim, who is talking? 03:03:49 -Wuzhou_middle.a 03:03:56 hta, listening for 11 seconds I could not identify any sounds 03:05:10 Zakim, call Wuzhou_middle 03:05:10 ok, dom; the call is being made 03:05:11 +Wuzhou_middle 03:05:49 -Wuzhou_middle 03:07:10 done. 03:07:18 I don't hear anything, though. 03:07:37 droh_ has joined #webrtc 03:09:49 Marcus_Altman has joined #webrtc 03:15:39 zakim is silent 03:16:58 zakim, who is here? 03:16:58 On the phone I see Jim_Barnett 03:16:59 On IRC I see Marcus_Altman, droh_, yusuke_, rbarnes, chris, taocai, Travis_MSFT, JimBarnett, alexG, yahui, juberti, dom, mreavy, jinkyu_seong, jesup, adambe, stefanh, silvia1, hta, 03:16:59 ... robin, elagerway, ekr, burn, martin_, adam, frodek, fluffy 03:17:19 yes, but you are still echoing 03:18:37 we will get zakim in 03:19:07 +??P8 03:19:26 Jim, 03:19:31 do you hear us now 03:20:30 hi, i will be your scribe for this session 03:20:51 adam: first part of slides are OBE, due to discussion of justin's material 03:21:01 http://www.w3.org/2011/04/webrtc/wiki/images/4/40/W3C-sdp-oa.pdf 03:21:21 TonyKuo has joined #webrtc 03:21:24 slide: Other Resource Reservation (Codecs, Hardware) 03:21:29 DanD has joined #webrtc 03:21:52 and it is slide #8 03:22:02 adam: input resources, trying to cover all the resources you might need here 03:22:35 ... this get freed on the indicated conditions, not when the PC ends 03:22:42 AndyF has joined #webRTC 03:22:45 ekr: well, if the PC is GCed 03:23:06 ... also if the MediaStreamTrack gets GCed 03:23:21 ken has joined #webrtc 03:23:36 stephane has joined #webrtc 03:23:39 fluffy: say you have a track assigned to a global variable, not to any PC 03:23:48 ... so you're going to attach the video codec to the track, not to the PC 03:23:59 adam: talking about input resources (camera), not codecs 03:24:14 ekr: as long as any handle is available, and stop() has not been called, its' reserved 03:24:18 adam: exactly 03:24:34 wuyan has joined #webrtc 03:24:59 adam: start the resource reservation when you addStream... 03:25:13 juberti: don't know at that point what resolutions, etc. you need 03:25:29 hta: may also need to differentiate encode/decode 03:25:33 kotakagi has joined #webrtc 03:25:38 bo_hu has joined #webrtc 03:25:44 ekr: suppose i have a hardware limit, when should the failure appear 03:25:49 juberti: createOffer 03:26:15 ekr: then it will not really be a recoverable error. if it occurs at addStream, then greater chance of being able to recover 03:27:02 jesup: there are always be constraints on capability 03:27:14 Dan_Sun has joined #webrtc 03:27:33 juberti: you could easily have an encoder that could do 2 streams, but only at certain resolutions 03:27:51 fluffy: suspect we're going to have a set of objects that map this stuff together 03:28:53 Qiuling has joined #webrtc 03:29:08 adam: on setRemoteDescription, they're telling us that we're going to receive a certain stuff... 03:29:29 ekr: think the implication is that creatOffer/createAnswer is where the reservation happens 03:30:08 richt has joined #webrtc 03:30:23 adam: (summarizing) reservation lasts to the end of the callback closure 03:30:27 richt has joined #webrtc 03:30:41 here is the relevant text 03:30:42 "Session descriptions generated by createAnswer must be immediately usable by setLocalDescription without generating an error if setLocalDescription is called from the successCallback function. Like createOffer, the returned description should reflect the current state of the system. The session descriptions must remain usable by setLocalDescription without causing an error until at least the end of the successCallback function. Calling this method is needed to g[CUT] 03:30:42 ICE user name fragment and password." 03:30:46 ... conclusion whether we're doing something with addStream? 03:31:01 burn: why did we get to that conclusion? 03:31:14 ekr: there are cases where createOffer will fail that cannot be detected at addStream 03:31:27 DanD has joined #webrtc 03:31:29 note that we might not want reservation to last beyond the minimal time otherwise JS will work on software stuff were the reservation lasts longer and same JS program will fail on hardware based devices that do not extent the life of the reservation beyond the minimal time 03:31:34 ... therefore we need to handle errors at createOffer/createAnswer-time, not useful to also have it at addStream time 03:31:41 gangLiang has joined #webrtc 03:31:49 fluffy: would propose that we actually forbid the reservation to last beyon g the minimal time 03:32:00 because it encourages safe programming idioms 03:32:06 burn: conceptually, addStream just sets an internal variable, not until createOffer/Answer or setLocal/Remote that something interesting happens 03:32:22 juberti: adam mentioned there might be some other interesting uses, but those don't affect the application 03:32:34 adam: these resources are freed at the end of the closure 03:32:52 ekr: how do we get to closure on this question? 03:33:07 juberti: write up the case you just described, and look at where the errors get handled 03:33:16 fluffy: suggest adding this to the agenda for later 03:33:43 adam: strike "RemoveStream" from "freed by" bullet 03:33:48 The proposal is that Stefan add an agenda item to figure out what kind of error handling we need to detect/react to failure to CreateOffer due to insufficient resources 03:33:57 action to add to agenda: Way to have the error handling for createOffer be able to report what had happened when all the resources could not be reserved for codecs 03:33:57 Error finding 'to'. You can review and register nicknames at . 03:34:10 … said agenda item should be in the error handling part of the agenda 03:34:26 action stefan: add to agenda: Way to have the error handling for createOffer be able to report what had happened when all the resources could not be reserved for codecs 03:34:29 Created ACTION-91 - Add to agenda: way to have the error handling for createoffer be able to report what had happened when all the resources could not be reserved for codecs [on Stefan Håkansson - due 2013-11-18]. 03:34:30 juberti: createOffer/setRemote is doing the reservation 03:34:52 ... but if a stream goes away, you might need to create a new offer 03:35:07 adam: planning to propose adding a "negotiation needed" 03:35:19 juberti: not sure getting the codec back 50ms earlier is a big advantage 03:35:33 adam: you're saying the stop() doesn't really help, since your'e just going to re-negotiate 03:35:50 ... and possible h/w issues are not in scope 03:36:19 ... stop triggers negotiationNeeded, and the negotiation triggers releases / frees 03:36:37 juberti: reservations happen on create*, frees on set*Description 03:36:42 ekr: is this sufficiently clear in the spec? 03:36:46 adam: last slide 03:37:18 slide: Media Transmission and Reception 03:37:27 juberti: this is covered in JSEP 03:37:31 fluffy: +1 03:38:02 slide: Local Session State Rollback 03:38:19 adam: AFAICT, this is the only case where rollback is useful 03:38:52 ... current version of JSEP says we do this with rollback, but doesn't say anything about the body 03:39:17 juberti: the proposal on this slide was what i had in mind 03:39:25 richt has joined #webrtc 03:39:38 "Proposal: Use type of "rollback", sdp string ignored" 03:39:54 fluffy: do you have to pass the previous sdp 03:39:57 adam: no 03:40:06 fluffy: as long as you can only roll back once 03:40:23 ekr: can i roll back from stable? 03:40:28 adam: no, only from partial state 03:40:36 fluffy: and only roll back to the previous stable state 03:40:45 jeff has joined #webrtc 03:41:05 adambe: aren't we kind of abusing setLocalDescription by doing this? even in this group there's confusion about what to do here? 03:41:16 adam: could add a rollback() method... 03:41:25 juberti: but rollback has to happen for both local and remote 03:41:42 ekr: i argued for this design because the other side can force you into rollback 03:42:11 juberti: i came to the same conclusion, that this was better than having separate rollback methods 03:42:46 q+ to say how about just doing suing a prior SDP and doing a state reset 03:42:59 jesup: the primary argument is what eke said, since you could send them the string and they would just do it 03:43:25 andybe: how about a more generalized "reset to prior state" mechanism 03:43:29 hta: no 03:43:43 ... the more generalized the mechanism, the harder to tell what will happen 03:43:56 juberti: there's less validation that needs to occur 03:44:00 tao_mobile has joined #webrtc 03:44:34 ... harder to figure that out more generally 03:44:41 adambe: only use valid states 03:45:45 ... if you lose a state, how do you know the past state is valid 03:45:53 fluffy: you have to be ready to receive both the last and the new valid 03:46:00 adam: so the rollback just deletes the future state 03:46:25 jesup: making an API that implies that you can roll back to anywhere will promise something you can't do 03:46:32 fluffy: and you'll never map it to SIP 03:46:49 adam: if you're in stable, and someone tries to roll back, it will fail 03:47:33 fluffy: i think a better way to think about is to discard any changes since previous stable 03:47:38 rbarnes: abort the negotiation 03:47:45 juberti: adam's proposal is the cleanest option 03:48:01 ... being able to roll back a remote offer is a good ida 03:48:05 s/ida/idea 03:48:21 jesup: call setRemoteDescription, but you're unhappy with the new streams 03:49:10 martin_: setLocal is the tranition point 03:49:42 burn: one of the reasons this is good is that a peer can send you this supposed SDP blob 03:49:54 ... are there cases where createOffer or createAnswer would create rollback? 03:50:30 fluffy: could arise with a gateway, e.g, if you got a 400/500-class error on the SIP side, map it to rollback on this side 03:50:53 adam: that's not the question 03:51:31 ekr: suggested case: what happens if i do setRemote, and i can't process all the stuff you want to send 03:51:41 adam: there's an error callback for that 03:52:07 did you guys get an answer to the question you asked ? 03:52:43 burn: fine without it being that way 03:53:03 jesup: we talked about rollback after a setRemote, because you have to make the other side do it 03:53:12 adam: that's an application-level thing 03:53:36 ... ignore next slide 03:53:52 ekr: what happens now if you send me a description i cannot possibly process 03:53:59 adam: you get an error callback 03:54:00 juberti: yes 03:54:14 ekr: so it's not just malformed that triggers the error, can also be "i can't process that" 03:54:26 adam: probably need a class of error for "i can't process that" 03:54:42 s/adam/ekr/ 03:54:46 Yan has joined #Webrtc 03:55:05 ekr: but unrecognized codecs might be different from codecs you know, but can't proess 03:55:15 s/proess/process 03:55:30 TonyKuo_ has joined #webrtc 03:55:33 jesup: but in that case, should it fail, or succeed partially 03:55:41 adam: in the latter case, the app could decide to roll back 03:56:10 stefan: could succeed, and app could use stats to detect that no packets are flowing 03:56:32 ... added a topic for error handling discussion 03:56:46 juberti: added a state here, "might be less than you wanted" 03:57:01 feross has joined #webrtc 03:57:05 Moving on to slide "Requesting Partial Offers" - slide # 14 03:57:29 spec says: The setLocalDescription() method instructs the RTCPeerConnection to apply the supplied RTCSessionDescription as the local description." 03:57:37 that's not true anymore then 03:57:49 slide: requesting partial offers 03:58:19 proposal: add "partial:true" constraint to createOffer 03:58:32 ... if changes are more than can be done with partial, then send back a full offer 03:58:52 fluffy: is there a way in the initial O/A for both sides to indicate support for partial O/A 03:58:53 ? 03:59:05 burn: this is less about making a partial offer than accepting a partial offer 03:59:09 richt has joined #webrtc 03:59:21 fluffy: find it scary not to provide some standardized way to negotiate partial O/A 03:59:29 adam: thought this was an application layer thing 04:00:07 fluffy: do you have a better solution? this is a substantial mod to O/A, we should negotiate it in O/A 04:00:19 hta: negotiations to O/A should be negotiated above O/A 04:00:23 TonyKuo__ has joined #webrtc 04:00:24 adam: that's how we do bundle 04:00:44 ... so this is an IETF level suggestion, the POF/PAN draft needs to do this 04:01:10 ... then if it hasn't been negotiated, a request with "partial: true" will just never produce partial 04:01:20 hta: should be clear that the constraint can be ignored by the browser 04:01:36 jesup: if you take this and use it with current browsers, they'll ignore it anyway 04:01:44 burn: why does the application need to ask for the partial 04:01:49 DanD_ has joined #webrtc 04:02:03 ... if they negotiate needing to send partials, great. but then why does the app need to request it at any point? 04:02:16 adam: it's necessary if you negotiate it in the application layer 04:02:46 jesup: suggest by default negotiated in the SDP, let partial==true be the default, partial==false if you overwrite it 04:02:52 richt has joined #webrtc 04:03:08 ... if the application wants the full SDP, it can get it by forcing partial==false 04:03:28 juberti: having the output of createOffer be dependent on previous SDP makes me sad from an API perspective 04:03:36 adam: how would you discover this? 04:03:40 juberti: some property on the PC 04:03:41 richt has joined #webrtc 04:03:58 jesup: why does the app need to care 04:04:12 juberti: might not be doing full SDP, might be munging diffs in JS 04:04:41 burn: what are the use cases, why does the app need to have partial or non-partial 04:04:52 adambe: do you have to handle glare in both cases? 04:04:54 adam: yes 04:05:15 juberti: concerned that if the app things it's going to get a partial and doesn't, that's bad 04:05:30 ... likewise in the reverse 04:05:50 adam: you have apps right now that are doing SDP scraping, so if they get something not-SDP, they'll break 04:06:03 ... they need to have a way to say "i'm willing to deal with partials" 04:06:25 DanS has joined #webrtc 04:06:26 jesup: that's only based on a need for backward compatibility with apps that scrape SDP 04:06:38 ... but it does impose that request forevermore 04:06:41 yan has joined #webrtc 04:06:52 adam: perhaps we could pass this into the PC constructor 04:07:06 juberti: if you expect a partial, you can get a full, but not vice versa 04:07:30 jesup: when i see something that will eventually be cruft, i want to get rid of them 04:07:38 juberti: this is way down on the list of potential cruft 04:08:05 adam: propose to put this in the PC constructor, not have something per createOffer 04:08:21 jesup: that would only impact things that need to change per message 04:08:41 burn: you're *never* guaranteed to get a partial anyway, so you're just saying "i know how to deal with partial" 04:08:45 Dan , you boas our ears out in this room when you talk - any chance of getting a bit further from mic 04:09:19 jesup: if you want to retain the capability, you can either leave it on createOffer, or leave it on PC and allow it to be overridden 04:09:27 adam: sort of back to what's on the slide 04:09:57 juberti: constructor constraint might be workable if we have a way to get the full offer 04:10:25 ... case is you get an offerless SDP... 04:10:53 richt has joined #webrtc 04:11:15 TonyKuo has joined #webrtc 04:11:20 adam: (summarizing) if you really want a full one of these, you can do [that], but it gives you a list of everything you *could* do 04:11:58 juberti: kind of feel like this is the cleanest way to go 04:12:07 richt has joined #webrtc 04:12:10 ekr: what is the impact of POF/PAN on local/remoteDescription 04:12:14 adam: you get the full thing 04:13:03 stefan: what's the resolution? 04:13:28 adam: agreement that we will have a signal for this, put it in the POF/PAN draft 04:13:37 ACTION to adam to make the change to POF/PAN 04:13:37 Error finding 'to'. You can review and register nicknames at . 04:13:38 action adambe: put initial negotiation of pof/pan support into the pof/pan draft 04:13:38 Created ACTION-92 - Put initial negotiation of pof/pan support into the pof/pan draft [on Adam Bergkvist - due 2013-11-18]. 04:14:28 juberti: is this global per PC, or local per message, or both? 04:14:31 tao has joined #webrtc 04:14:52 ... if we're going to have the fullFull constraint, would prefer to have it at the same level 04:15:01 ... how do you know you can use this with the remote peer? 04:15:33 adam: if that attribute is absent, and someone asks for partial, then the browser just won't generate it 04:15:39 juberti: that's fine 04:15:50 [[ unanimous consent ]] 04:15:59 consent that it's on the createOffer 04:16:15 slide: Processing partial offers 04:16:47 martin_: and this will blow up if it gets something full? 04:17:23 ... "this is not an answer for the offer i sent" 04:17:55 juberti: what about the case where there's enough changes that you need a full offer? 04:18:02 adam: then you trigger re-negotiation 04:18:15 martin_: not sure when you'll see a partial exchange trigger some consequences 04:18:18 TonyKuo_ has joined #Webrtc 04:18:58 -??P8 04:19:41 -Jim_Barnett 04:19:42 UW_WebRTC()7:00PM has ended 04:19:42 Attendees were Wuzhou_Middle, Wuzhou_middle.a, [IPcaller], Jim_Barnett 04:21:49 richt has joined #webrtc 04:22:08 richt has joined #webrtc 04:30:01 richt has joined #webrtc 04:31:11 ken has joined #webrtc 04:54:00 kotakagi has joined #webrtc 05:04:30 kotakagi_ has joined #webrtc 05:29:40 stefanh has joined #webrtc 05:31:34 kotakagi has joined #webrtc 05:32:54 ken has joined #webrtc 05:34:21 ken has joined #webrtc 05:36:16 jinkyu_seong has joined #webrtc 05:37:19 silvia has joined #webrtc 05:38:33 dom has joined #webrtc 05:45:13 ken_ has joined #webrtc 05:47:07 alexG has joined #webrtc 05:47:12 start up after lunch was supposed to happen now - but there will be some delay FYI 05:47:25 frodek has joined #webrtc 05:52:47 fluffy has joined #webrtc 05:52:47 burn has joined #webrtc 05:53:24 adambe has joined #webrtc 05:53:26 ekr has joined #webrtc 05:53:30 we have called in, but we are only hearing echo from ourselves 05:54:53 can you guys at that end mute ? 05:55:18 we're muted now 05:56:17 thanks 05:56:22 rbarnes has joined #webrtc 05:56:45 mreavy has joined #webrtc 06:00:23 Marcus_Altman_ has joined #webrtc 06:00:37 juberti has joined #webrtc 06:01:17 dom, done. 06:01:38 zakim says "this conference is restricted at this time. 06:02:13 droh has joined #webrtc 06:02:49 ken has joined #webrtc 06:03:27 ken has joined #webrtc 06:04:08 jcverdie_ has joined #webrtc 06:04:40 scribenick: ekr 06:04:51 zakim: who is here? 06:04:56 http://www.w3.org/2011/04/webrtc/wiki/images/4/40/W3C-sdp-oa.pdf 06:04:57 slide 17 06:04:59 TonyKuo has joined #webrtc 06:05:30 DanD has joined #webrtc 06:05:31 rrsagent, draft minutes 06:05:31 I have made the request to generate http://www.w3.org/2013/11/11-webrtc-minutes.html ekr 06:05:46 gangLiang has joined #webrtc 06:06:07 slide with title "Stream Pause/Unpause/Rejection/ 06:06:08 Leon has joined #webrtc 06:06:08 Removal" 06:06:34 Leon has joined #webrtc 06:06:44 abr: we used to think we could defer, unpause, etc. 06:06:51 … implementors want it 06:07:08 … can just be clearer about API 06:07:27 taocai has joined #webrtc 06:07:34 abr: slide 18 06:07:46 bo_hu has joined #webrtc 06:08:03 … to pause, set enabled=false, this paused media and starts renegotaition 06:08:16 jy has joined #webrtc 06:08:22 yw has joined #webrtc 06:08:32 juberti: we have three states, ended, paused, muted, but just two api points 06:08:33 Zakim has left #webrtc 06:09:11 dwshim has joined #webrtc 06:09:13 agreement that mute just turns off mic 06:10:16 discussion of events. is muted a response to an external button? 06:10:52 hta: muted is outside application control and enabled is inside application control 06:11:22 TonuKuo has joined #webrtc 06:11:23 jesup: where should this be tied to? 06:11:28 yahui has joined #webrtc 06:11:56 fluffy: what about a track going to two places? 06:12:10 richt has joined #webrtc 06:12:12 yusuke_ has joined #webrtc 06:13:10 jeromemarcon has joined #webrtc 06:13:51 general consensus we need more knobs 06:14:38 jesup lists some 06:14:41 TonyKuo has joined #Webrtc 06:14:59 fluffy draws diagram 06:15:25 feross has joined #webrtc 06:15:59 jmr has joined #webrtc 06:16:11 1. Camera with hardware control to go black 06:16:21 2. Application control to do (black, silence, frozen frame) 06:16:25 3. Stop sending packets 06:17:59 [stopping transcription] 06:19:04 silvia1 has joined #webrtc 06:19:37 AndyF has joined #webrtc 06:19:48 AndyF has left #webrtc 06:19:57 AndyF has joined #webRTC 06:20:05 Topic 1: hw mute button 06:20:36 This is read-only 06:21:16 Topic 2: freeze/black from the application. consensus that black/silence was fine 06:21:19 zakim, who is here? 06:21:26 dom: apparently not 06:22:06 mt: what about removing the stream? 06:22:34 fluffy: permanent vs. temporary stream removal 06:23:12 stephane has joined #webrtc 06:24:59 tao has joined #webrtc 06:26:01 various comments about how much you need to send dummy data even when not sending content in order to keep bandwidth estimation working 06:26:43 abr: people with gateways want to tell the gatewy stream is going inactive 06:27:44 … they want signaling to indicate it 06:27:52 Tiffany has joined #webrtc 06:31:25 ekr got lost 06:31:38 and cullen has agreed to write down his view 06:32:02 RTP RTCP m-line 06:32:03 Send Black Black yes yes 06:32:04 no RTP no yes yes 06:32:05 end no yes zero 06:32:29 take two 06:32:30 RTP RTCP m-line 06:32:31 Send Black Black yes yes 06:32:32 no RTP no yes yes 06:32:33 end no no zero 06:35:24 Need to turn the audio on and off immediately, and no RTP can not happen super quick 06:35:51 ken has joined #webrtc 06:36:10 Tiffany has joined #webrtc 06:36:29 ken has joined #webrtc 06:36:59 proposal. enabled --> send black but still send RTP 06:37:39 "The muted/unmuted state of a track reflects if the source provides any media at this moment. The enabled/disabled state is under application control and determines if the track outputs media (to its consumers). Hence, media from the source only flows when a MediaStreamTrack object is both unmuted and enabled." 06:38:00 slides are http://www.w3.org/2011/04/webrtc/wiki/images/4/40/W3C-sdp-oa.pdf 06:38:08 slide number 18 06:41:22 feross has joined #webrtc 06:41:41 --> stop sending RTP 06:45:05 jib has joined #webrtc 06:45:28 also causes onnegotiationneeded on the sender side 06:45:40 TonyKuo_ has joined #webrtc 06:47:19 on the receiver side, .enabled = false causes the output to be black 06:47:42 yw_ has joined #webrtc 06:48:01 if the other side stops sending RTP, the track gets mute set 06:49:14 yw has joined #webrtc 06:49:50 ken has joined #webrtc 06:51:23 juberti: the names are messed up but not clear we can fix it 06:51:53 DanS has joined #webrtc 06:52:37 tao has joined #webrtc 06:53:35 richt has joined #webrtc 06:54:18 we lost seattle 06:54:30 richt has joined #webrtc 06:54:38 ok 06:54:46 we noticed and trying to get you back 06:54:46 we lost both call and hangouts from you 06:54:50 no phone, no hangout 06:55:03 thanks! 06:55:06 you will need to re-call 06:55:21 HTA working on calling 06:55:31 ken_ has joined #webrtc 06:55:54 TonyKuo has joined #Webrtc 06:56:48 we are still connected to hangouts (and were to the phone as well before we hung up), so this appears to be on your end 06:57:13 Dom can you guys hang up so we can reinvade you 06:57:37 ok - we are trying to redial 06:57:52 we are seeing you 06:57:56 we see you in hangouts 06:57:58 waiting for the call 06:59:14 DanD has joined #webrtc 06:59:27 I have called again, but I get no sound from your phone 06:59:37 try unmuting in the hangout.. 06:59:57 no. 07:00:01 we cannot hear you 07:04:04 richt has joined #webrtc 07:04:23 richt has joined #webrtc 07:05:08 DanS has joined #webrtc 07:07:19 yusuke__ has joined #webrtc 07:10:49 yusuke has joined #webrtc 07:11:13 jehoochen has joined #webrtc 07:11:27 jehoochen has left #webrtc 07:12:15 I know for sure that removing a stream or ending it have the same net effect 07:13:41 TonyKuo has joined #webrtc 07:14:20 conclusion there was that removing or ending the track will cause the msid to disappear from signaling 07:15:36 DanS has joined #webrtc 07:17:51 thanks - got you that time 07:18:49 http://www.w3.org/2011/04/webrtc/wiki/images/4/40/W3C-sdp-oa.pdf slide 20 07:23:05 richt has joined #webrtc 07:23:49 richt has joined #webrtc 07:24:06 TonyKuo_ has joined #webrtc 07:25:29 richt has joined #webrtc 07:25:55 tao has joined #webrtc 07:26:57 ijongcheol has joined #webrtc 07:28:29 ken has joined #webrtc 07:28:57 One way of dealing with all these cases is to look at transmitting the set of tracks that are attached to all streams on a RTCPeerConnection 07:29:35 If you then treat the stream association for each track as a property of each track, easy. 07:30:13 richt has joined #webrtc 07:35:29 HJ_lee has joined #webrtc 07:36:18 ken has joined #webrtc 07:38:05 tao has joined #webrtc 07:46:58 richt has joined #webrtc 07:47:52 richt_ has joined #webrtc 07:48:00 ken has joined #webrtc 07:48:35 richt has joined #webrtc 07:49:58 yusuke has joined #webrtc 07:50:38 richt has joined #webrtc 07:51:43 ijongcheol has joined #webrtc 07:56:27 tao has joined #webrtc 07:56:37 yusuke_ has joined #webrtc 07:57:37 ijongcheol has joined #webrtc 08:00:18 minami has joined #webrtc 08:01:02 minami has left #webrtc 08:01:32 It was hard to follow here too 08:02:56 rbarnes has joined #webrtc 08:04:36 kotakagi has joined #webrtc 08:05:45 http://www.w3.org/2011/04/webrtc/wiki/images/4/40/W3C-sdp-oa.pdf slide 23 08:06:03 stephane has joined #webrtc 08:06:06 we need action to do what was on the above slide 23 - it seems people agree with thqt 08:06:08 yw has joined #webrtc 08:07:27 action fluffy: make addIceCandidate queued 08:07:27 Created ACTION-93 - Make addicecandidate queued [on Cullen Jennings - due 2013-11-18]. 08:08:12 Leon has joined #webrtc 08:08:31 ijongcheol has joined #webrtc 08:08:46 action justin: prepare slides for Tuesday on Stop() versus Removestream() 08:08:46 Created ACTION-94 - Prepare slides for tuesday on stop() versus removestream() [on Justin Uberti - due 2013-11-18]. 08:10:37 http://lists.w3.org/Archives/Public/public-webrtc/2013Nov/0005.html 08:10:55 ScribeNick: adambe 08:11:02 Tony has joined #webrtc 08:12:23 burn: you might want to look at the webrtc spec as we walk through the email 08:12:39 Topic: Error handling 08:12:59 drumbeat.stop() 08:14:11 -> http://dev.w3.org/2011/webrtc/editor/webrtc.html WebRTC editors draft 08:15:27 -> http://dev.w3.org/2011/webrtc/editor/archives/20130830/webrtc.html Aug 30 draft 08:15:59 burn: we're ready here 08:17:13 ... I've gone throgh the document and noted where we have "throw a TBD error" or where an error is reported 08:17:21 TonyKuo has joined #webrtc 08:19:08 ken has joined #webrtc 08:19:41 ... on topic RTCPeerConnection, section 4.3.1 08:19:56 ijongcheol has joined #webrtc 08:20:00 ... action to remove bullet 5 08:20:01 Tonykuo has joined #webrtc 08:20:35 ... that is bullet 5 in the third algorithm 08:21:33 ... additional actions: remove bullet 4 in the some algorithm as well as "issue 1" 08:22:26 Marcus_Altman__ has joined #webrtc 08:22:51 DanD has joined #webrtc 08:22:51 ... next topic: addIceCandidate(), section 4.3.2.3 08:22:55 bo_hu has joined #webrtc 08:26:20 ijongche_ has joined #webrtc 08:29:14 richt has joined #webrtc 08:29:21 ywu has joined #webrtc 08:31:39 BoYang has joined #WebRTC 08:33:13 ... proposed solution: the addIceCandidate() method should throw "InvalidCandidate" and "InvalidMediaIndex" depending on the error 08:33:42 yahui has joined #webrtc 08:33:52 ... "InvalidMediaIndex" should be "InvalidMidIndex" 08:34:11 Tony has joined #Webrtc 08:34:37 ... the method should fire the error callback instead of throwing 08:36:01 ... the line about "SyntaxError" should also be removed 08:39:08 ... the "SyntaxError" should be moved the the RTCIceCandidate() constructor 08:39:10 ... next topic: addStream(), section 4.3.2.3 08:39:48 burn: I think the exception is fine 08:41:20 ... the WebRTC document needs to be updated to use the new Constrainable concepts 08:41:59 richt has joined #webrtc 08:45:53 ... we need to go through the "argument constraints" in the webrtc spec and see if they really are constraints or if they could be replaced with plain settings 08:47:40 Tony has joined #Webrtc 08:47:56 Dan has joined #webrtc 08:48:06 action dan: Go through all usage of constraints in WebRTC and figure out how to deal with them (or find someone else to do that) 08:48:06 'dan' is an ambiguous username. Please try a different identifier, such as family name or username (e.g., dburnett, ddruta, dromasca). 08:48:35 ACTION: adambe to Go through all usage of constraints in WebRTC and figure out how to deal with them (or find someone else to do that) 08:48:36 Created ACTION-95 - go through all usage of constraints in webrtc and figure out how to deal with them (or find someone else to do that) [on Adam Bergkvist - due 2013-11-18]. 08:49:27 burn: next topic: close(), section 4.3.2.3 08:50:17 ... conclusion, remove the throw 08:51:16 ... on topic addStream(), section 4.3.2.3, remove issue 3 08:51:34 ... new topic: createAnswer(), section 4.3.2.3 08:51:44 richt has joined #webrtc 08:51:56 ... let's skip the issues with Constrainable 08:53:47 Marcus_Altman__ has joined #webrtc 08:54:55 ... conclusion: if the SDP generation process fails, the error callback should be called with "GenericFailure" 08:55:20 ... next topic: createOffer(), section 4.3.2.3 08:55:32 ... same conclusion as createAnswer() 08:55:39 kotakagi has joined #webrtc 08:55:47 ... next topic: removeStream(), section 4.3.2.3 08:56:51 Suggestion for generic failure: Let's use "AbortError", since it's already defined in DOM, and has a meaning of "I stopped trying to do this because it didn't work". 08:59:47 ... conclusion: keep the exception 09:00:08 burn: next topic: setLocalDescription() , section 4.3.2.3 09:01:22 ... conclusion: keep the exception 09:01:23 richt has joined #webrtc 09:02:52 ywu has joined #webrtc 09:04:17 For IceRestart: 09:04:52 yusuke has joined #webrtc 09:05:13 When ICE restarts, the gathering state will be changed back to "gathering", if it was not already gathering. If the IceConnectionState was "completed", it will be changed back to "connected". 09:05:16 ... conclusion (cont.): juberti will send text on the ice part (paragraph 2) 09:07:16 ijongcheol has joined #webrtc 09:07:52 silvia has joined #webrtc 09:08:15 yusuke__ has joined #webrtc 09:08:31 gangliang has joined #webrtc 09:09:55 ... conclusion (cont.): lets keep InvalidSessionDescriptionError 09:10:06 Tony has joined #Webrtc 09:11:16 ijongche_ has joined #webrtc 09:12:13 richt has joined #webrtc 09:12:29 ... conclusion (paragraph 4): needs more discussion 09:12:54 action: fluffy to do s/roll back/rollback/g 09:12:54 Created ACTION-96 - Do s/roll back/rollback/g [on Cullen Jennings - due 2013-11-18]. 09:13:00 ... next topic: setRemoteDescription(), section 4.3.2.3 09:13:19 richt has joined #webrtc 09:14:21 Tony has joined #Webrtc 09:15:46 richt has joined #webrtc 09:15:59 yusuke has joined #webrtc 09:16:27 ijongcheol has joined #webrtc 09:17:27 ... conclusion: fluffy will fix the reference 09:17:44 bo_hu has joined #webrtc 09:18:21 ... conclusion (cont.): martin_ will write a proposal 09:18:41 martin_: proposal is "send black" 09:19:10 ywu_ has joined #webrtc 09:19:26 burn: next topic: updateIce(), section 4.3.2.3 09:20:09 ywu has joined #webrtc 09:21:14 ... skip the constrainable part (we've already got an action on that) 09:22:03 ijongcheol has joined #webrtc 09:22:21 Tony has joined #Webrtc 09:24:09 kotakagi_ has joined #webrtc 09:24:21 richt_ has joined #webrtc 09:24:34 ... conclusion: the method does not have to be queued 09:26:15 burn: are we done with updateIce? 09:28:20 richt has joined #webrtc 09:29:38 ijongcheol has joined #webrtc 09:31:12 richt_ has joined #webrtc 09:32:04 Adding ice servers takes effect right away 09:32:25 removing doesn't come into effect until the next time candidate gathering commences (i.e., ICE restart) 09:32:45 the candidate filter can't be made more restrictive 09:33:23 attempting to make the filter more restrictive generates an error (exception) 09:34:10 justin suggested that this could be silent and the restriction could be applied at the next restart 09:34:32 ekr points out that this is a security feature and suppressing what is bad behaviour would be not good 09:35:10 richt has joined #webrtc 09:37:01 if you want to make more restrictive filters on candidates, create a new RTCPeerConnection 09:37:40 stephane has joined #webrtc 09:39:31 ijongcheol has joined #webrtc 09:40:50 RRSAgent, draft minutes 09:40:50 I have made the request to generate http://www.w3.org/2013/11/11-webrtc-minutes.html dom 09:40:59 actions: https://www.w3.org/2011/04/webrtc/track/actions/open 09:41:03 ACTION for EKR: create a proposal for how to report the case where a given MediaStreamTrack cannot be assigned to an m=section due to being unable to obtain codecs 09:41:03 Error finding 'for'. You can review and register nicknames at . 09:41:06 -> http://www.w3.org/2013/11/11-webrtc-minutes.html#ActionSummary Today's action items 09:41:13 ACTION EKR: create a proposal for how to report the case where a given MediaStreamTrack cannot be assigned to an m=section due to being unable to obtain codecs 09:41:13 Created ACTION-97 - Create a proposal for how to report the case where a given mediastreamtrack cannot be assigned to an m=section due to being unable to obtain codecs [on Eric Rescorla - due 2013-11-18]. 09:41:26 RRSAgent, draft minutes 09:41:26 I have made the request to generate http://www.w3.org/2013/11/11-webrtc-minutes.html dom 09:42:34 christer has joined #webrtc 09:44:09 taocai has left #webrtc 09:50:16 richt has joined #webrtc 09:50:37 silvia has joined #webrtc 09:50:43 richt_ has joined #webrtc 09:55:42 richt__ has joined #webrtc 09:56:46 ijongcheol has joined #webrtc 09:57:32 silvia has joined #webrtc 09:59:24 richt has joined #webrtc 10:00:19 dong has joined #webrtc 10:00:29 dong has left #webrtc 10:04:23 hta has joined #webrtc 10:05:32 frodek has joined #webrtc 10:07:03 frodek has left #webrtc 10:09:46 richt_ has joined #webrtc 10:16:44 ken has joined #webrtc 10:22:18 silvia1 has joined #webrtc 10:22:35 richt has joined #webrtc 10:23:10 richt_ has joined #webrtc 10:29:06 richt__ has joined #webrtc 10:56:57 jib has joined #webrtc 11:27:16 ken has joined #webrtc 11:55:46 adam has joined #webrtc 12:55:34 wolfgangbeck01 has joined #webrtc 13:03:14 wolfgangbeck01 has left #webrtc 13:06:30 adam has joined #webrtc 13:45:09 kotakagi has joined #webrtc 14:02:15 chris has joined #webrtc 14:07:19 adam has joined #webrtc 14:20:49 ijongcheol has joined #webrtc 14:29:31 awclin has joined #webrtc 14:39:10 silvia has joined #webrtc 14:45:23 silvia1 has joined #webrtc 14:47:38 lgombos_ has joined #webrtc 14:56:27 ken has joined #webrtc 15:08:03 silvia has joined #webrtc 15:14:50 ken has joined #webrtc 15:18:03 adam has joined #webrtc 15:23:06 matteo has joined #webrtc 15:42:11 chris has joined #webrtc 15:42:56 mreavy has joined #webrtc 16:20:47 chris has joined #webrtc 16:41:24 hta has joined #webrtc 16:43:16 jesup has joined #webrtc 16:57:13 silvia has joined #webrtc 18:29:53 adam has joined #webrtc 18:50:07 lgombos has joined #webrtc 19:32:55 lgombos has joined #webrtc 19:40:36 adam has joined #webrtc 19:51:55 hta has joined #webrtc 19:59:01 hta1 has joined #webrtc 20:13:56 ken has joined #webrtc 20:32:55 feross has joined #webrtc 20:36:08 lgombos_ has joined #webrtc 20:51:43 hta has joined #webrtc 20:52:00 lgombos has joined #webrtc 21:42:04 ken has joined #webrtc 22:24:35 ken has joined #webrtc 22:26:10 silvia has joined #webrtc 22:41:23 adam has joined #webrtc 23:08:08 lgombos has joined #webrtc 23:43:37 hta has joined #webrtc 23:44:49 lgombos_ has joined #webrtc