14:55:49 RRSAgent has joined #webrtc 14:55:53 logging to https://www.w3.org/2024/03/26-webrtc-irc 14:55:53 Zakim has joined #webrtc 14:56:58 Meeting: WebRTC March 26 2024 meeting 14:56:58 Agenda: https://www.w3.org/2011/04/webrtc/wiki/March_26_2024 14:56:58 Slideset: https://lists.w3.org/Archives/Public/www-archive/2024Mar/att-0005/WEBRTCWG-2024-03-26.pdf 14:56:58 Chairs: HTA, Jan-Ivar, Bernard 14:59:30 Present+ Jan-Ivar, SunShin, Dom 15:00:25 Present+ Youenn 15:00:33 Present+ Bernard 15:01:18 Present+ PhilipEliasson 15:02:10 Present+ PeterThatcher 15:02:14 Present+ ShridharMajali 15:02:23 Present+ TonyHerre 15:02:25 Present+ Carine 15:02:50 Present+ Florent 15:03:13 Recording is starting 15:03:34 Present+ Elad 15:04:15 s/Recording is starting// 15:04:53 Present+ Guido 15:05:34 Recording is starting 15:05:53 Regrets+ Harald 15:05:59 s/HTA, // 15:07:46 Topic: -> https://github.com/w3c/webrtc-pc/issues/2944 Alternative storage for RTCCertificates neededWebRTC API 15:07:46 [slide 11] 15:08:18 [slide 12] 15:08:54 [slide 13] 15:09:22 [slide 14] 15:10:04 [slide 15] 15:11:26 Youenn: a possible way would be to extract information to store it on the cloud that the Web page can access it on reload; but that's not helping when you're not connected 15:11:49 ... I would prefer not to expose key materials to JavaScript; it's not clear this would help with this use case anyway 15:12:26 ... in terms of privacy, if you're allowed to keep it for a longer lifetime, it harms privacy 15:13:12 Jan-Ivar: +1 to NOT exposing key materials to JS - this shouldn't be a conclusion from the E2E 15:14:18 Dom: seems hard to reconcile persistent storage with privacy protection 15:14:29 Youenn: Chrome has a persistent storage API that may help 15:14:56 ... but it's not implemented in Safari 15:16:14 -> https://storage.spec.whatwg.org/#dom-storagemanager-persist StorageManager.persist() API 15:16:30 Dom: +1 on exploring this rather than try to design a new solution in this space from scratch 15:16:42 Topic: -> https://github.com/w3c/mediacapture-extensions/issues/118 Should web applications be aware of reaction effects added by OS to camera feeds? #118 15:16:42 [slide 18] 15:17:29 Youenn: some OS allow users to insert reactions based on user gestures into captured videos 15:17:59 ... this isn't in control of the app or the browser 15:18:18 [slide 19] 15:19:49 [slide 20] 15:20:00 Present+ TovePetersson 15:21:35 Youenn: Jan-Ivar made a proposal in PR #141 15:22:25 Elad: great solution for what is a significant problem 15:22:45 ... looking forward to having it 15:23:06 Youenn: there is an API in current MacOS that allows to say whether reactions are one or off 15:23:27 ... it's not currently possible to disable/enable reactions at this point, but this is under consideration 15:24:15 Elad: enabling/disabling is what we're most looking forward to 15:25:14 Youenn: the user is in control of enabling/disabling, so apps could still guide the user toward that as a first step 15:25:36 ... this proposal is compatible with both level of flexibility 15:26:23 Elad: practically speaking, I'm skeptical teleconferencing apps would try and guide users, so really hoping we get to the 2nd level 15:26:35 Jan-Ivar: I'm supportive too; very similar to background blur 15:27:00 ... adding this API removes an obstacle towards making it available with possible read/write capabilities in the future 15:27:54 RESOLVED: Proceed with proposal based PR #141, with name bikeshedding left to editors 15:28:24 Topic: Media Capture Specifications 15:28:24 Subtopic: -> https://github.com/w3c/mediacapture-main/issues/984 Clarify each source is responsible for specifying mute/unmute/ended and constraints behavior 15:28:24 [slide 24] 15:29:28 Jan-Ivar: we agreed on a resolution to #984 at our last meeting - that requires some spec clean up in places where mediastreamtrack sources get defined 15:30:04 Jan-Ivar: I opened a batch of issues to match: 15:30:05 -> https://github.com/w3c/mediacapture-screen-share/issues/298 Review mute/unmute/ended and constraints on tracks from getDisplayMedia() 15:30:05 -> https://github.com/w3c/webrtc-pc/issues/2942 Review mute/unmute/ended and constraints on RTCRtpReceiver's track 15:30:05 -> https://github.com/w3c/mediacapture-transform/issues/109 Review mute/unmute/ended and constraints on new VideoTrackGenerator().track 15:30:06 -> https://github.com/w3c/mediacapture-fromelement/issues/98 Review mute/unmute/ended and constraints on tracks from element.captureStream() 15:30:09 -> https://github.com/w3c/mediacapture-fromelement/issues/99 Review mute/unmute/ended and constraints on tracks from canvas.captureStream() 15:30:12 -> https://github.com/WebAudio/web-audio-api/issues/2571 Review mute/unmute/ended and constraints on track in audioContext.createMediaStreamDestination().stream 15:30:25 [slide 26] 15:32:02 Elad: +1 to closing mediacapture-screen-share/#298 15:32:05 Youenn: +1 too 15:32:24 s|/#|# 15:34:08 [slide 27] 15:35:08 Youenn: muting tracks on stopped transceivers sound like a webkit bug, indeed; is there a matching WPT test? 15:36:12 ... re unmuting ahead of RTP - waiting for the RTP could create a race where a frame gets sent while you still think you're muted; how valuable is it to wait for the RTP packet? 15:36:22 ... since there isn't interop on this yet, there may be room to change/simplify 15:36:44 Jan-Ivar: I'm not aware that this has creating an issue for FF 15:37:04 ... an event that fires on main thread will be put potentially on a busy queue 15:37:47 ... but it may be worth filing an issue to reconsider the current spec'd behavior, ideally with some measures/experiments to back the question 15:38:20 ... or we leave webrtc-pc#2915 open? 15:38:26 Youenn: a separate issue sounds good 15:39:08 ... any input from Chromium crbug 941740 15:40:16 Guido: that's behavior inherited from old language; we need to look at it to check web compat, but this shouldn't block progress on the spec 15:40:36 ... I agree with the spec clarification 15:41:22 youenn: if this isn't web compatible, this would be useful feedback 15:42:24 RESOLVED: close webrtc-pc#2942 as reviewed and webrtc-pc#2915, open an issue on timing of unmuting on RTC reception 15:42:40 [slide 28] 15:43:25 RESOLVED: close mediacapture-transform#109 15:43:27 [slide 29] 15:44:47 i/[slide 27]/RESOLVED: close mediacapture-screen-share#298 15:44:57 RRSAgent, draft minutes 15:44:59 I have made the request to generate https://www.w3.org/2024/03/26-webrtc-minutes.html dom 15:45:09 RRSAgent, make log public 15:46:11 Youenn: AFAIK, this is only implemented in Chrome; we probably should start from what's implemented 15:46:38 ... when content is tainted, it cannot be untainted except by restarting the streaming (ending the track) 15:47:10 Jan-Ivar: FF has an implementation (prefixed as mozCaptureStream) 15:48:18 Youenn: then that would be worth integrating in our analysis as well 15:48:50 [slide 30] 15:50:08 Jan-Ivar: mediacapture-fromelement#99 is a dup of mediacapture-fromelement#82 15:50:33 Youenn: +1; we should look at origin-clean - I think a tainted canvas stay canvas, but I could be wrong 15:50:50 ... otherwise, we should consider ending the track 15:51:58 Guido: in Chrome, the muting behavior is based on whether we're sending frames 15:52:20 Jan-Ivar: what happen when calling captureStream(0) in that situation? 15:52:36 Guido: it will be muted too 15:52:46 Jan-Ivar: we should clarify since I don't think there is interop on atm 15:53:12 Guido: +1 on aligning within web compat 15:53:33 ... I don't envision big challenges 15:53:54 RESOLVED: no implementation-defined behavior for mediacapture-fromelement#82; close mediacapture-fromelement#99 15:54:02 Youenn: we should file tests for this 15:54:14 ... Safari is not firing events afaict 15:54:39 ... I'm still not seeing how a tainted canvas can be cleaned - this could be a different issue 15:54:47 Jan-Ivar: +1 on new clarified issues 15:55:17 [slide 31] 15:56:09 Jan-Ivar: this is up to the WebAudio WG, but is there any additional advice we would like to give them? 15:56:56 Youenn: it makes sense; I wonder about muting when suspending a context? not sure there is a demand for it 15:57:14 Jan-Ivar: maybe an ended event in case of a terminal action on the audiocontext? 15:57:53 ... in any case, please chime in on the webaudio issue if interested WebAudio/web-audio-api#2571 15:58:02 Subtopic: -> https://github.com/w3c/mediacapture-record/issues/194 mimeType ambiguity: "video/webm;codecs=vp8" means? 15:58:02 [slide 32] 16:00:54 Youenn: +1 to align the spec with Chrome 16:01:04 ... the audio codec might depend on the container 16:01:36 RESOLVED: Align spec with Chrome 16:01:40 Topic: -> https://github.com/w3c/webrtc-extensions/pull/198 RTCRtpEncodedSource 16:01:40 [slide 35] 16:01:48 Present+ TimP 16:01:53 [TimP joins] 16:04:01 [slide 36] 16:04:39 Guido: this is the result of iteration on github, now matching the pattern of encoded transform, with only a writable part 16:06:01 [slide 37] 16:08:23 [slide 38] 16:09:45 [slide 39] 16:12:02 Guido: having this wouldn't preclude a packet-based API if useful for other use cases 16:12:41 [slide 40] 16:13:16 TimP: I like this; some worry that it's not obvious that it's the same frame from multiple sources 16:13:31 ... not sure how the metadata get preserved in the routing 16:14:22 Guido: re metadata, this is under control of the overall application - this doesn't have to be solved at the level of that spec 16:15:17 TimP: right, but I wonder if there is a question the timeline of exposing metadata in the frame 16:15:33 Tony: the header extension dependency descriptor should help 16:15:40 TimP: but will that be available in the worker? 16:15:54 Guido: right - but this can be considered separately 16:16:19 Youenn: the API shape is fine, the use case as well; there may be some refinement on names 16:16:49 ... in encoded transform, we're making it hard to trigger errors 16:17:07 ... here there are many error triggering opportunities, which will need to be signalled in a timely manner to the Web app 16:17:56 ... this is basically modeling an encoder - we should do that modeling work early on 16:18:20 Guido: Harald's model with bandwidth congestion etc can help think about these questions 16:18:50 Youenn: for instance, we should list all the error cases we can think of, and determine how they get handled (signal to the app, drop the data, ignore) 16:18:53 Guido: +1 16:19:36 Bernard: so this is an alternative to addTrack/replaceTrack - does that imply additional work where other parts of the system assume it's a track but it's not, e.g. stats? 16:20:01 Guido: since this is very similar to a track, it's probably a matter of having clarifications in the text 16:20:31 ... from the point of view of the system, it's very similar to a MediaStreamTrack - we need to identify the parts where they differ (e.g. it's already encoded) 16:21:01 ... the initial proposal I made had identified a few monkey patches, but they weren't substantial 16:21:51 Bernard: would track events pass through? are there equivalent to ended events? how would replaceTrack work since it depends on the state of the track? 16:22:19 Guido: the track signals shouldn't be much of problem 16:23:17 Youenn: re impact on stats, this would have been more difficult on the initial proposal; in this new API shape, the UA can determine that stats are no op 16:23:45 Jan-Ivar: thanks for explaining the use case; it looks ambitious, but I like the small step approach 16:24:02 ... it does raise a number of questions at the model level as we just discussed 16:24:12 ... I like the API shape 16:25:09 ... re constructor for RTCEncodedVideoFrame - is there a copy of the arraybuffer when constructing a new frame? 16:25:19 guido: you should (although it could be optimized for copy on write) 16:25:29 Jan-Ivar: other potential sources, e.g. WebCodecs? 16:25:36 Guido: there could be yes 16:26:02 ... this would require better integrating encoded chunks in rtcencodedframes 16:26:43 Jan-Ivar: in the fan-out/fan-in example - if one of the nodes has specific encoding capabilities, this may create limitations 16:26:48 Guido: this is an app decision 16:27:47 Jan-Ivar: how would you deal with simulcast layers? 16:28:09 Guido: that's part of the error modeling we need to describe with appropriate signals 16:28:30 Jan-Ivar: this looks promising to me 16:28:55 Philip: do you have an example of what kind of metatadata would be passed? 16:29:00 guido: e.g. consistent frame ids 16:29:51 ... this is up to the application 16:31:00 Tony: the RTCEncodedVideoFrameMetadata dictionary expose the frame id via the header extension 16:31:51 Jan-Ivar: we have to figure how a sender without a track works, how setParameters work, ... 16:32:51 Youenn: we should definitely rely on WebCodecs 16:33:10 Guido: I'll explore creating an encoded frame from encoded chunks 16:33:34 Peter: getting these constructors is a fantastic idea 16:33:55 Topic: -> https://github.com/w3c/webrtc-nv-use-cases/ WebRTC Extended Use Cases 16:33:55 Subtopic: PR #118 Bandwidth feedback Speed(Configurable RTCP transmission interval) 16:33:55 [slide 42] 16:35:17 [slide 43] 16:35:27 joachimr has joined #webrtc 16:37:26 [slide 44] 16:38:04 [slide 45] 16:39:17 TimP: I understand the need, but I'm bothered by milliseconds; it feels like it should be tied to the frame interval rather than an absolute time 16:39:41 ... I like the general idea 16:40:53 Bernard: I'm not sure I understand the need for a control for L4S in the WebRTC API 16:41:19 Youenn: I had the same question - if the UA knows L4S is in use, it can just do it 16:41:45 ... it feels like this would be something the UA would want to enable in any case when it's available 16:42:41 Sun: we think different apps may have different interval configurations 16:43:19 ... video recovery in loss conditions may also need different parameters 16:44:30 Bernard: looking at RFC8888 talks about the overhead of the feedback channel 16:46:10 RRSAgent has joined #webrtc 16:46:11 logging to https://www.w3.org/2024/03/26-webrtc-irc 16:46:16 Jan-Ivar: Gamestreaming sounds like a good use case to support, but I'm not sure about making some of these under the control of the app vs UA 16:46:20 ... maybe the requirement can be phrased in a way that avoids imposing a particular model 16:46:36 Bernard: the goal is to avoid building queues, reduce congestion 16:47:10 ... I agree a more general statement would work better 16:47:42 Jan-Ivar: I'm hearing the current configuration of UAs isn't optimized for game streaming - a question if a different configuration would work better for all use cases or only some 16:47:57 Bernard: part of the challenge is that it is under deployment at the moment 16:48:11 BurgerBurger has joined #webrtc 16:48:27 Joachim: at Meta, we have also found the need for these APIs 16:48:41 ... RTCP being restricted to 5% of bandwidth ties our hand 16:48:55 ... in the game streaming use case, it would be useful to remove that restriction 16:49:22 Bernard: connections tend to be so asymetric though 16:49:49 Peter: not limiting RTCP for feedback from congestion control would make sense 16:49:50 geheimnis` has joined #webrtc 16:50:00 Bernard: there can be a huge amount of feedback since the messages are large 16:50:21 Peter: but you're only doing this to figure out how much you can send - you can allocate more of that for the feedback with lower estimate 16:50:37 ... this is part of the congestion control mechanism - it's a different category from the rest of RTCP 16:51:03 TimP: that illustrates why a hint would be useful - there are use cases where this would be detrimental 16:51:19 ... e.g. in videoconference, you want to optimize the bandwidth for audio, not feedback 16:51:30 ... in game streaming, this may be a very different trade-off 16:52:53 Peter: I think it makes sense to let the app to choose between the trade-off of amount of bandwidth and responsive in feedback messages 16:53:06 Bernard: I like Tim's idea of a hint that lets the UA decide 16:53:15 ... there is also discussion on the jitter buffer target 16:53:35 ... I wonder if there is a set of hints that we could describe that covers the needs, without making them settings 16:54:22 Jan-Ivar: the current N48 req is very specific - maybe it could say the app "must be able to lower the timing…" or have some influence. Would that work? 16:54:25 Sun: yes 16:54:36 Subtopic: PR #129 video decoding recovery after packet loss 16:54:36 [slide 46] 16:54:39 RRSAgent, draft minutes 16:54:40 I have made the request to generate https://www.w3.org/2024/03/26-webrtc-minutes.html dom 16:55:46 Bernard: video recovery would be good - it's more complicated in the confenrecing case; there are a variety of proposals to improve this 16:55:50 [slide 47] 16:56:41 bemfmmhhj has joined #webrtc 16:57:14 [slide 48] 16:59:02 Peter: it'd be great to have support for LTR frames or support for control of the temporal layer in general 16:59:22 ... I'd be curious about how much we want to make this a WebRTC encoder API vs WebCodec API, or both 16:59:33 ... but dependency control is an important API to have 16:59:52 Bernard: if it was on WebCodec, it would bubble up to us through some of the changes we're discussing 17:00:18 ... I'd suggest to generalize the requirement about recovery reference control or additional recovery mechanisms 17:00:28 RRSAgent, draft minutes 17:00:29 I have made the request to generate https://www.w3.org/2024/03/26-webrtc-minutes.html dom 17:01:10 bemfmmhhj has joined #webrtc 17:01:10 geheimnis` has joined #webrtc 17:01:10 BurgerBurger has joined #webrtc 17:01:10 slightlyoff has joined #webrtc 17:01:10 timeless has joined #webrtc 17:01:10 Josh_Soref has joined #webrtc 17:02:43 <[old]freshgumbubbles> [old]freshgumbubbles has joined #webrtc 17:04:04 w3c_modbot has joined #webrtc 17:04:29 meinfuhrer has joined #webrtc 17:07:43 Dalek has joined #webrtc 17:08:50 chainlesslove has joined #webrtc 17:09:23 Tobias has joined #webrtc 17:09:57 bigtestaccount has joined #webrtc 17:12:18 SergeyRubanov has joined #webrtc 17:14:53 iyobro143 has joined #webrtc 17:16:57 sentinel1975 has joined #webrtc 17:19:36 karmaishere has joined #webrtc 17:23:15 BradIsbell has joined #webrtc 17:27:07 OOM has joined #webrtc 17:27:34 Mike5Matrix has joined #webrtc 17:29:02 DirtyHeisenberg has joined #webrtc 17:32:34 SintayewGashaw has joined #webrtc 17:34:35 Github has joined #webrtc 17:40:56 MarkF has joined #webrtc 17:42:31 GiorgiGzirishvili has joined #webrtc 17:43:01 GiorgiGzirishvili has joined #webrtc 17:43:01 MarkF has joined #webrtc 17:43:01 Github has joined #webrtc 17:43:01 SintayewGashaw has joined #webrtc 17:43:01 DirtyHeisenberg has joined #webrtc 17:43:01 Mike5Matrix has joined #webrtc 17:43:01 OOM has joined #webrtc 17:43:01 BradIsbell has joined #webrtc 17:43:01 karmaishere has joined #webrtc 17:43:01 sentinel1975 has joined #webrtc 17:43:01 iyobro143 has joined #webrtc 17:43:01 SergeyRubanov has joined #webrtc 17:43:01 bigtestaccount has joined #webrtc 17:43:01 Tobias has joined #webrtc 17:43:01 chainlesslove has joined #webrtc 17:43:01 Dalek has joined #webrtc 17:43:01 meinfuhrer has joined #webrtc 17:43:01 w3c_modbot has joined #webrtc 17:43:01 <[old]freshgumbubbles> [old]freshgumbubbles has joined #webrtc 17:43:01 bemfmmhhj has joined #webrtc 17:43:01 geheimnis` has joined #webrtc 17:43:01 BurgerBurger has joined #webrtc 17:43:01 slightlyoff has joined #webrtc 17:43:01 timeless has joined #webrtc 17:43:01 Josh_Soref has joined #webrtc 17:45:34 Hash has joined #webrtc 17:46:17 vianka has joined #webrtc 17:48:27 manutrivedi has joined #webrtc 17:49:41 M0x has joined #webrtc 17:51:46 KevinBush has joined #webrtc 17:52:26 miguelNavarro has joined #webrtc 17:53:13 naseeralshoowk has joined #webrtc 17:56:10 general_j has joined #webrtc 17:56:48 JerryZhang has joined #webrtc 17:59:11 sdd has joined #webrtc 18:04:14 aswaniaryo has joined #webrtc 18:07:42 fales has joined #webrtc 18:11:03 SeanDuBois has joined #webrtc 18:11:09 <__z__> __z__ has joined #webrtc 18:12:16 AnthonySpencer has joined #webrtc 18:12:24 padenot has joined #webrtc 18:12:40 joraboi445 has joined #webrtc 18:13:50 juztinjohnz has joined #webrtc 18:14:30 <^_^> ^_^ has joined #webrtc 18:17:19 Matthewaway has joined #webrtc 18:18:59 JustinJenkins has joined #webrtc 18:20:13 hunter_hsbnd has joined #webrtc 18:22:02 robjperez has joined #webrtc