#1218: Media Capture Capability Elements (part of PEPC)
Discussions
Log in to see TAG-private discussions.
Discussed
Apr 6, 2026 (See Github)
Jeffrey: maybe Mike here?
Christian: sounds reasonable.
Ehsan: I might be interested, let me have a look.
Jeffrey: ok.
Discussed
Apr 27, 2026 (See Github)
Jeffrey: if we notice anything, let's post to blink-dev, as the API owner has just approved it to ship. We asked them to make the element, but acted as if we'd approved the design of it, which is not the case - I pointed that out, but if we have comments we should make them on blink-dev first.
Discussed
May 11, 2026 (See Github)
Matthew: Ehsan put in a comment on that one.
Jeffrey: That’s on whether the user media explainer needs it’s own S&P section. Which I agree with. Don’t think we need to block on them adding them, and then do the review. However, I expect there are interesting implications for usermedia where they should consider alternatives.
Brian: Is it shipped?
Jeffrey: It’s not shipped. They are pausing their launch and extending their origin trial. (https://groups.google.com/a/chromium.org/g/blink-dev/c/V_ef1L9BtHw/m/FTqZZLOSAQAJ) However, I don’t expect that we will get feedback in time. We should post those comments in parallel, with asking for the alternatives considered and other sections for this explainer.
Discussed
May 18, 2026 (See Github)
Mike: Is feedback useful since it's shipping?
Lola: We can decline to review things if for whatever reason we don't want to review it. We'd write a comment. However, even when something has shipped or is close to shipping, our feedback can still be helpful. It's good to have a written record of what we thought, even if it doesn't cause implementation changes.
Jeffrey: Eevn though this is close to shipping in Chrome, it's not close in the other browsers. There's a window to effect their implementations, and that could impact Chrome.
Luke: FWIW, it's not shipping in Chromium. The I2S was paused to extend the Origin Trial for ~3 versions.
Mike will continue reviewing.
Discussed
Jun 8, 2026 (See Github)
Mike: Essan got back with some extra thoughts this morning... someone else in our group I thought had said they were going to give it another review, but I don't remember who that was - it wasn't Jeffrey. I wasn't sure if Essan wanted to modify my comment or not... What is the procedure here?
Lola: I would just ask him in slack
Mike: I just looked it up it was heather who said she wanted to look
Lola: ping her in slack too
Matthew: One of you I think said this could be a place to standardize play pause... That's a bit where you migth want to combine forces a bit.
Discussed
Jun 22, 2026 (See Github)
Mike: Moving forward with Heather and Ehsan. We are consolidating input. Expect to post a comment tomorrow.
Discussed
Jun 29, 2026 (See Github)
(Skipped.)
Discussed
Jun 29, 2026 (See Github)
Mike: Last week Ehsan volunteered to incorporate feedback into the comment and post it. I'll ping Ehsan in Slack.
Discussed
Jul 6, 2026 (See Github)
Discussed
Jul 13, 2026 (See Github)
Mike: Ehsan drafted a comment; LGTM.
Comment by @slightlyoff Jul 27, 2026 (See Github)
FYI that there's a new Chromium/Blink I2S citing this review; if the TAG wants to weigh in, the time is now:
https://groups.google.com/a/chromium.org/g/blink-dev/c/Iaoq0CYadzo/m/4NcvzdVqFwAJ
Comment by @toreini Aug 3, 2026 (See Github)
Thanks for submitting this work. We have the following concerns regarding this spec and request clarification:
-
The spec should require that the mute trigger be origin-bound and device-bound. (This is for consistency with Media Stream permission policy requirements.)
-
Whether using
getUserMedia()or the latest version of this proposal, every app that offers to "mute" a device retains the prerogative to unmute that device at any moment. Do you see any opportunities to provide security guarantees to users, that their camera will not suddenly be re-activated without their consent? (following the encoureged behaviour in Media Stream permission policy)
We feel that there should be potential for UA interaction to reassure users that once their camera/audio is muted, it will not be suddenly re-activated without their consent. Does this design leave some space to explore solutions to this problem? Do you think it would be possible to standardize such guarantees?
- This spec will fomalise the following action-sequence: mute → unmute → mute. As the mute action is already fomally defined in Media Capture and Streams. We request the spec developers consider a clear definition for the action sequence to avoid confusion.
Furthermore, we have some observations regarding the explainer:
-
There are two links included: one related to PEPC (which was a separate TAG review) and another for
<usermedia>. The explainer for the latter, which we assumed is the focus of this review, does not follow the standard format. It lacks sections such as "S&P considerations" and "alternatives considered" - these are important in order for readers and reviewers to understand the trade-offs made during the design of the proposal. Can you please update the explainer to be consistent with the explainer format?Note: You may find the similar discussions in the
<geolocation>explainer helpful.
Discussed
Aug 10, 2026 (See Github)
Mike: Ehsan posted the comment.
Lola: Needs the 'pending external feedback' label (added).
Comment by @otherdaniel Aug 19, 2026 (See Github)
Thanks for taking a close look! I see three concerns regarding the 'mute trigger': We have taken this out of the spec & and out of our implementation, because several aspects of the desired behaviour were unclear, and there was no agreement with the WebRTC editors on the details. Progress on that topic is tracked here: https://github.com/w3c/mediacapture-extensions/issues/170
I think we should have also taken this aspect out of the explainer. But looking back, it's probably fortunate because now we have additional input on this topic.
- The spec should require that the mute trigger be origin-bound and device-bound. (This is for consistency with Media Stream permission policy requirements.)
Whether it's bound to the stream or the device was one of the open questions. I think we now have one more vote to make it per-device.
- Whether using getUserMedia() or the latest version of this proposal, every app that offers to "mute" a device retains the prerogative to unmute that device at any moment. Do you see any opportunities to provide security guarantees to users, that their camera will not suddenly be re-activated without their consent? (following the encoureged behaviour in Media Stream permission policy) We feel that there should be potential for UA interaction to reassure users that once their camera/audio is muted, it will not be suddenly re-activated without their consent. Does this design leave some space to explore solutions to this problem? Do you think it would be possible to standardize such guarantees? Generally, the idea is that the user media capture elements would reflect the true state of the underlying stream or device: If e.g. the stream gets un-muted by API calls, the element should show it as un-muted. This matches the guidance you have linked.
Regarding a guarantee to disallow un-muting when the user has explicitly muted a stream: This is a good idea. I don't think this was considered, but I think we'd be happy to.
I expect all effects of the user media capture elements to correspond to Media Capture and Streams API capabilities. I think this would boil down to having some sort of 'hard mute' in the Media Capture and Streams spec, which I don't think is a capability that spec currently supports. It's IMHO worth considering.
I do see a risk for user experience, though: If a site uses the new media element capture elements, but also has some traditional UI that uses WebRTC APIs -- e.g. it uses <usermedia> to start a video conference, but also has traditional UI controls -- then it might run into the trap where a mute via the <usermedia> button mutes a stream, and the existing UI calling into Media Capture and Streams might no longer work as expected because the API-based unmute is "weaker" than the button based one. Maybe this can be resolved in some fashion; but it'll certainly require some care.
- This spec will fomalise the following action-sequence: mute → unmute → mute. As the mute action is already fomally defined in Media Capture and Streams. We request the spec developers consider a clear definition for the action sequence to avoid confusion.
Yes, I agree. As mentioned above, I expect all actions of the media capture elements to be exclusively defined in terms of the Media Capture and Streams specification. Hosting the usermedia element specification alongside Media Capture and Streams extensions at https://github.com/w3c/mediacapture-extensions/ (rather than our WICG repository, https://github.com/WICG/PEPC) supports that goal.
OpenedApr 7, 2026
Specification
https://w3c.github.io/mediacapture-extensions/#media-capture-html-elements
Explainer
https://github.com/w3c/mediacapture-extensions/blob/main/media-capture-elements-explainer.md, https://github.com/WICG/PEPC/blob/main/usermedia_element.md, https://github.com/WICG/PEPC/blob/main/explainer.md
Links
The specification
Where and by whom is the work is being done?
Feedback so far
You should also know that...
- Historical context: This is a subsequence step of
- The specification is currently hosted in a PEPC repository. We intend to request a review from the WebRTC's media capture extensions this week.
<!-- Content below this is maintained by @w3c-tag-bot --><permission>element proposal, and in response to feedback and discussions, we are moving away from a single, generic permission element. Instead, we are proposing separate elements tailored to specific capabilities. After splitting and releasing the<geolocation>element proposal, we are now introducing the media capture (<usermedia>,<camera>,<microphone>) elements. This new elements will inherit all attributes, events, and checks from the<permission>element. Ultimately, the<permission>element will function solely as a base class for specialized capability elements and will not be for direct use.Track conversations at https://tag-github-bot.w3.org/gh/w3ctag/design-reviews/1218