15:49:42 RRSAgent has joined #webrtc 15:49:46 logging to https://www.w3.org/2023/12/05-webrtc-irc 15:49:46 Zakim has joined #webrtc 15:49:58 Meeting: WebRTC December 5 2023 meeting 15:49:58 Agenda: https://www.w3.org/2011/04/webrtc/wiki/December_05_2023 15:49:58 Slideset: https://lists.w3.org/Archives/Public/www-archive/2023Dec/att-0000/WEBRTCWG-2023-12-05.pdf 15:49:58 Recording: https://youtu.be/-MB6aFAiHkE 15:49:58 Chairs: HTA, Jan-Ivar, Bernard 16:00:59 Present+ PeterThatcher, Bernard, Fippo, SunShin, Florent, Dom 16:01:14 Present+ Sameer, Henrik 16:02:11 Present+ StefanHolmer 16:02:22 Present+ Youenn 16:03:08 Present+ Carine 16:04:21 Present+ TonyHerre 16:04:50 Present+ Jan-Ivar 16:05:24 Recording is starting 16:05:35 Present+ Guido 16:05:50 Present+ Harald 16:06:37 Present+ Randell 16:06:47 Present+ Shridhar 16:08:03 Topic: -> https://github.com/w3c/webrtc-encoded-transform/pull/212 WebRTC-Encoded Transform: Describe data attribute PR #212 16:08:03 [slide 11] 16:10:31 Fippo: please review so that we can get it merged 16:11:25 jan-ivar: thanks for the PR, it looks good to me - doesn't add API surface, only describe current one? 16:11:28 fippo: correct 16:11:46 jan-ivar: let's review it in the editors meeting before merging 16:12:18 harald: good to bring attention to this new information during this meeting 16:13:14 Bernard: this is valuable information, it shouldn't be normative, but it needs to be somewhere 16:13:46 jan-ivar: anything that stood out as problematic or unusual when writing this up? e.g. did it reveal concerns with packetization of certain codecs 16:13:58 hta: the AV1 thing was a surprise 16:14:02 Topic: -> https://github.com/w3c/webrtc-extensions/ WebRTC Extensions 16:14:02 Subtopic: PR #175: Add RTCIceTransport method to remove pairs 16:14:02 [slide 12] 16:14:21 Sameer: we discussed this in TPAC 16:17:53 Peter: this looks good - 2 minor remarks: 16:18:20 ... the array argument makes sense if you 90 candidate pairs to remove, but it makes it more complicated to figure the return value 16:18:59 ... what's the reason for preventing adding back removed candidate pairs? 16:19:22 Sameer: you could recreate a pair via remoteAddCandidate(), we don't have a mechanism for the app to add one 16:19:36 Peter: oh, so the idea is the *browser* doesn't add it back, makes sense 16:20:11 Bernard: canceling nomination: do you mean remove pair before nomination? 16:20:32 sameer: relates to the event we added which the app can preventDefault() 16:21:40 henrik: if performance becomes a concern, it's possible to batch internally the removals 16:21:52 ... the PR LGTM 16:22:03 ... no strong feeling re array vs array, but either way can be optimized 16:22:24 jan-ivar: I don't like the array since I don't think it's necessary, Promise.all can do the batching 16:22:38 ... restartIce() resets things, right? 16:22:40 Sameer: right 16:23:00 jan-ivar: overall this feels a bit like a hack around nomination because nomination may be too strict 16:23:24 ... we could clarify that this is part of the UA-behavior 16:23:48 ... I want to make sure we don't overstep anything set in the IETF spec 16:24:03 Peter: ICE implementations are always free to remove candidate pairs 16:24:16 Sameer: I'll update the PR in that direction before it hopefully gets merged then, thanks 16:24:47 Subtopic: -> https://github.com/w3c/webrtc-pc/issues/2170 Issue #2170 Data channel default binaryType value is 'blob' 16:24:47 [slide 13] 16:24:59 s/Subtopic:/Topic:/ 16:25:02 RRSAgent, draft minutes 16:25:04 I have made the request to generate https://www.w3.org/2023/12/05-webrtc-minutes.html dom 16:25:51 RRSAgent, draft minutes 16:25:53 I have made the request to generate https://www.w3.org/2023/12/05-webrtc-minutes.html dom 16:25:59 RRSAgent, make log public 16:26:47 Present+ TimPanton 16:26:56 Present+ PaulAdenot 16:27:46 florent: using Blob to send big files, even if implemented, wouldn't work as is 16:28:18 Randell: having originally designed this, at this point, I agree switching the default makes sense 16:28:32 ... it's unfortunate the lack of implementation has gained over the spec 16:28:40 ... it is possible to send large files with blob 16:29:45 florent: maxMessageSize doesn't make that practical 16:29:58 Randell: this can be polyfilled on top of datachannel, but this is water under the bridge 16:30:21 ... we should take this as a warning to avoid these incompatible implementations that last for so long 16:30:49 florent: blob implementation would be possible, but switching the default would break web-compat 16:31:09 Bernard: the slide should say "Firefox" rather than "Safari" shipping blob as default 16:32:00 RESOLVED: change the default for binaryType to arraybuffer 16:32:34 Topic: -> https://github.com/w3c/mediacapture-extensions/pull/134 Mediacapture Extensions: latency in Audio Stats 16:32:34 [slide 14] 16:33:42 [slide 15] 16:34:38 Harald: is there a way to figure out when resetLatency was called? 16:34:44 Henrik: the app knows 16:34:49 Harald: is reset sync? 16:34:54 Henrik: yes 16:35:10 Paul: no objection on my end 16:35:14 RESOLVED: adopt PR 16:35:55 Topic: -> https://github.com/w3c/webrtc-nv-use-cases/ WebRTC Extended Use Cases: Low Latency Streaming 16:35:55 Subtopic: Low Latency Broadcast w/fanout PR #123 16:35:55 [slide 19] 16:36:18 [slide 20] 16:36:59 Bernard: the use cases in 3.2.2 have very different requirements 16:37:15 ... e.g. very low latency is likely only relevant to sporting events 16:37:39 ... PR #123 attemps to refocus it on very low latency use cases (auctions) 16:38:04 [slide 21] 16:39:34 [slide 22] 16:40:07 Bernard: ^ proposed new text with PR 123 applied 16:40:21 -> https://pr-preview.s3.amazonaws.com/w3c/webrtc-nv-use-cases/pull/123.html#auction PR 123 preview of auction use case 16:41:19 jan-ivar: could we remove "millions" from the use case? 16:41:38 bernard: sure, more likely relevant in the context of a webinar 16:41:46 jan-ivar: will add to the PR review 16:42:23 [thumbs up from folks on the call with going forward with the PR] 16:42:30 Subtopic: Game Streaming 16:42:30 [slide 23] 16:43:03 Bernard: performance is a growing issue, esp in the context of 4K 16:43:06 [slide 24] 16:43:25 [slide 25] 16:43:58 bernard: #103 is feedback from youenn - formulating N37 in terms of API requirements 16:44:04 [slide 26] 16:44:41 bernard: PR #125 attempts to do that by referring explicitly to control of hardware acceleration 16:44:55 ... this relates to discussion we had e.g. about events for hardware failure 16:45:10 Randell: what does "controlling" mean from a stack perspective? 16:45:29 Bernard: be able to control whether you specifically want hardware acceleration 16:45:46 ... Web Codecs has a preferHardware switch 16:46:04 ... We have an issue to raise events when fail over from hardware to software 16:46:30 Randell: notification seems useful, but that seems different from this specific requirement 16:47:05 ... the requirement here seems to be on implementation 16:47:12 Bernard: no, it's an implementation on the API 16:47:32 ... part of the issue is not knowing why the failover happened doesn't let developers determine whether they can fix the situation 16:47:51 Randell: the goal seems right, but the wording remains too fuzzy in terms of requirements 16:48:27 Henrik: "controlling" is the right word - this isn't just "prefering" for a given codec and leaving it to the UA to decide 16:48:53 ... the app needs to know what's possible and make a decision based on the available hardware 16:49:19 randell: so exposing more information about current hardware support for streams that are running and potential hw support for streams that are offered 16:49:52 Bernard: there is also the big mess around receivable / sendable codecs 16:50:13 hta: control here is a keyword for "can you do this?", "do this and let me know if you can't" 16:51:17 jan-ivar: hw control is a requirement today, but it may not be the case tomorrow 16:51:33 ... maybe we can specify the requirements in a way that makes it clear that it requires hw support today 16:51:58 randell: hw acceleration is mentioned as an example of a solution in the current language 16:52:24 jan-ivar: there will be concerns in terms of privacy review 16:52:30 bernard: please suggest changes to the PR 16:53:07 jan-ivar: how about "...acceleration if necessary" 16:53:10 henrik: SGTM 16:53:15 bernard: +1 16:53:33 Sun: PR #118 touches on other requirements for game streaming 16:53:39 [sldie 28] 16:53:44 s/sldi/slid/ 16:53:56 Sun: we propose 2 kind of requirements: "fast recovery" 16:54:00 [slide 29] 16:54:09 ... and 2 requirements for "consistent latency" 16:54:15 [slide 30] 16:54:28 Sun: we discussed this during TPAC 16:55:23 Randell: I support this; when we first designed WebRTC, we purposefully didn't specify what happened in terms of decoding on frameloss 16:56:26 ... Support for non-full I-frame collections is possible as well 16:56:55 Bernard: is there any API change surfaced to JS needed to support this? 16:57:15 ... I could see this needed in the context of WebCodecs, but not sure for WebRTC 16:58:05 Sun: at minimum, the ability to set a flag on whether to enable fast recovery 16:58:05 Bernard: not just an SDP parameter then? 16:58:17 Peter: supporting this would require a large change to libwebrtc video jitter buffer - is that realistic? 16:58:32 ... rtptransport has custom jitter buffer as a use case 16:59:10 Jan-Ivar: I'm unsure W3C needs to do something, vs having this being negotiated via SDP with user-agent deciding whether to support it 16:59:24 Randell: it could be done via SDP, but it feels a bit of a hack 17:00:07 ... re implementation, having done this in the past, it would indeed require changes in the jitter buffer, but it doesn't seem like a major rewrite, more like a small or medium amount of work to continue decoding while waiting for an i-frame (with errors in the buffers) 17:00:59 Harald: if it doesn't change the bits on the wire, it shouldn't be done via SDP 17:01:06 ... so in my mind, it does require an API 17:01:39 Henrik: if this was possible to do, would there be any reason not to have it on all the time? does it add overhead? does it need a control knob? 17:02:33 Bernard: there are probably applications that wouldn't want do this, e.g. in the context of a legal case 17:03:00 Dom: maybe we need a use case for the "off" mode before we say we need it 17:03:13 Sun: please bring more feedback on github 17:03:25 [slide 31] 17:04:23 Bernard: if this is about how to do it, it probably needs discussion in IETF given discussions about how well RPSI works 17:04:48 ... I'm not sure there is a WebRTC API issue vs implementation or IETF 17:05:11 ... it's most complicated for conferences (compared to the one-to-one game streaming scenario) 17:05:32 Sun: so I guess we should remove this req based on that feedback 17:05:42 Bernard: +1 - let's take it up in IETF, it's an important problem 17:05:45 [slide 32] 17:07:28 Bernard: which messages are you interested in getting the interval of? PLI? Receiver reports? 17:07:48 Shridhar: tranport@@@ 17:08:11 HTA: can this be uplifted a bit? what you want is to have a definitive time limit by when you know if a packet was lost 17:08:29 ... it might be good better to say that rather than speak of specific RTCP messages 17:08:48 ... this would make a more concrete requirement that allows different implementations 17:08:57 Sun: we'll update the requirement in that direction 17:09:00 [slide 33] 17:10:42 Randell: how much of this is talking about the API vs the implementation? 17:10:47 Sun: no API change required here 17:10:57 Randell: so more of a commentary of the implementation in libwebrtc 17:11:07 ... not really in scope for the WG 17:11:13 Sun: thanks for the feedback 17:11:26 Jan-Ivar: there is an API for jitter buffer target 17:11:40 Randell: that's mostly to have more delay 17:11:48 jan-ivar: or less, in theory 17:11:57 Sun: we'll update the PR based on the discussions 17:12:22 Topic: -> https://github.com/w3c/webrtc-rtptransport RtpTransport 17:12:22 [slide 37] 17:13:02 -> https://docs.google.com/document/d/1cousnS2rmHRH7GEMjWfHTisdUxD2FSVHREbgkbZhuCE/edit#heading=h.2vx6woi9m2uv RtpTransport Reminder 17:13:11 [slide 39] 17:13:27 [slide 40] 17:14:14 [slide 41] 17:15:20 [slide 42] 17:15:46 [slide 44] 17:16:35 [slide 45] 17:17:20 Peter: 3 possible general directions I want to review today 17:17:52 [slide 46] 17:18:59 [slide 47] 17:20:53 [slide 48] 17:21:08 [slide 49] 17:22:07 [slide 50] 17:22:37 [slide 51] 17:23:15 Harald: another dimension is whether you can talk to existing end points 17:23:48 ... you can't with the new datachannel - in which case, what's the advantage over using WebTransport or Quic 17:24:08 ... the piecemeal approach doesn't need to be complex for the simple case - you just let through the things you don't want to modify 17:24:31 ... as long as you stay within certain parameters, you can talk to people that are not you, which I like 17:24:48 ... you can talk with endpoints that talk basic SRTP 17:25:08 ... it provides for incremental deployments and incremental implementations, by focusing on the particular function we care about today 17:25:28 Peter: you're correct with regard to the new datachannel speaking to existing end points 17:25:47 ... in terms of Quic - they're not P2P in the browser today; we could fix that 17:26:00 ... I agree with your points re piecemeal 17:26:35 Jan-Ivar: in my slides, I'm not proposing an rtp data channel, I agree with the limitations you and Harald have pointed out 17:26:55 ... I think we should only expose RTP as needed (maybe that points toward piecemeal) 17:27:06 ... we need to understand better the scope of the problems we want to address 17:27:58 Peter: so hearing more support for piecemeal (bit by bit adding to the existing API, but with likely a low level API) 17:28:18 ... I've done some exploration in this space 17:29:39 Bernard: dall-e did a good job representing the data channel proposal being an isolated island 17:29:46 ... I would not favor that 17:30:09 ... re piecemeal customization - if you can get the flexibility without the complexity, this would be ideal 17:30:18 ... but we have to demonstrate it 17:30:34 ... the incremental deployability is also appealing 17:31:42 Youenn: another vote for piecemeal - a web site should be able to override some parts of the pipeline, but with the UA taking over at some point 17:32:12 ... complexity is an important consideration 17:32:34 ... we've approached this by exposing injection points into the pipeline, we should continue with that approach 17:33:02 ... we should compare with the approach we're exploring in encoded-transform or to bring web codecs in 17:33:58 Henrik: another benefit of piecemeal is in terms of shipping it from an implementation perspective; not enough expertise on RTP to say much more 17:34:16 Subtopic: Issue #9 Customizing piecemeal 17:34:17 [slide 53] 17:34:46 Peter: if we go with piecemeal, this can be done - suggest following the taxonomy in rfc 7656, most importantly RtpStream 17:34:56 ... building on top of that 17:35:00 ... will flush this out more 17:35:35 Bernard: some of this would be around custom FEC/custom RTX scenarios? 17:36:31 Peter: right; I have explored a number of scenarios with that approach 17:37:02 Stefan: would you insert packets into these RtpStream objects? 17:37:31 Peter: capture what has been sent, allow it through if you're not customizing, or modifying it and injecting it back 17:37:46 ... with lots of implication in terms of congestion control - it gets complex but I think it's feasible 17:38:27 Harald: once you allow to insert packets then you can generate packets yourself, in either direction 17:39:08 Peter: absolutely; this is a superset of what I presented to TPAC in that sense 17:40:06 Jan-Ivar: I'm worried by "full piecemeal customisation" - I don't think we need to go to the extreme low level of exposing everything of the RFC on RTP 17:40:39 Peter: to be clear, I'm only asserting something is feasible, not any API shape 17:40:55 ... I'll come back with more specific API proposals, and others can make proposals as well 17:41:34 Henrik: I get similar vibes to encoded transform from this slide 17:41:50 ... which has proved a powerful pattern 17:41:57 Subtopic: Issue #10: SDP Bumper lanes 17:41:58 [slide 54] 17:42:26 Peter: if we go with piecemeal, I think we'll end up with lightly enforced bumper lanes 17:43:36 Bernard: Harald raised a concern with avoiding interferences with the existing peerconnection; this looks to be in the good direction 17:44:06 Peter: this may depend on whether we allow creating transports outside of a peerconnection 17:44:42 Harald: I think there should be an API for reserving things, e.g. to reserve an SSRC 17:45:28 ... the API might expose names (e.g. extensions by URIs) rather than by numbers which avoids the issue of conflicts 17:45:46 Peter: +1; interesting idea on names vs numeric ids 17:46:16 Harald: I'm hitting this with fanout land where we're discussing using mime types rather than payload types 17:46:25 Subtopic: Issue #7: SRTP/cryptex support 17:46:25 [slide 55] 17:47:31 Peter: with piecemeal, I think we could just rely on the outcome of the SDP negotiation 17:48:11 Bernard: we have a cryptex API in webrtc-extensions; if the other side supports cryptex, encrypting everything seems sufficient granularity, don't see value in per-packet control 17:48:18 Subtopic: Issue #13: Workers 17:48:18 [slide 56] 17:48:59 Peter: if there is a e.g. an RtpStream interface, we would need to ensure it is transferable - that sounds doable 17:49:39 Harald: SGTM; remember that when you transfer, you transfer one end of the tube; what's at the other end stays attached to where it was originally, which may have implication on implementation 17:50:28 Bernard: we support transferable stream, but would RtpStream be a WHATWG stream? 17:50:58 ... transfering individual objects may not be the right thing; e.g. for custom NACK needs both dealing with receiving Rtp and sending RTCP 17:51:09 ... you need a combination of read and write streams 17:51:31 ... this depends a lot on whether we use WHATWG streams or not 17:51:45 Peter: we need to figure the specific things that people would want to use in workers 17:51:58 ... you're right that RTCP is tricky 17:52:06 Bernard: we also need to figure which workers we need to support, e.g. audio worklets 17:52:42 Jan-Ivar: time-check? 17:53:11 Peter: ok - we'll need to look at some of the other issues 17:53:35 ... re WHATWG streams, I think this can be decided at a later stage once we have figured out the more fundamental question 17:53:58 Subtopic: WHATWG streams 17:54:04 [slide 63] 17:54:41 (issue #8) 17:55:00 [slide 64] 17:55:52 [slide 65] 17:58:20 [slide 66] 17:59:17 [slide 67] 18:01:24 Harald: transform has proved a limiting model - a transform is combining a sending and receiving API together 18:01:37 ... we should try to reduce the coupling between components, not increase it 18:02:41 Bernard: more work needed on this API; we talked about having a design team to work on this to advance more quickly on this in the general meetings 18:02:55 ... and advance the explainer and specs into more fleshed out states 18:03:00 ... next meeting next week 18:03:08 RRSAgent, draft minutes 18:03:09 I have made the request to generate https://www.w3.org/2023/12/05-webrtc-minutes.html dom 19:30:03 Zakim has left #webrtc