Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow for overriding reasons tracks stay muted #335

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 19 additions & 7 deletions index.bs
Original file line number Diff line number Diff line change
Expand Up @@ -946,13 +946,13 @@ interface MediaSession {
<a>In parallel</a>, run the following steps:
<ol>
<li>
Let <var>applyPausePolicy</var> be <code>true</code> if the user agent
Let <var>implementPausePolicy</var> be <code>true</code> if the user agent
implements a policy of <dfn>pausing all input sources</dfn> of type
<var>captureKind</var> in response to UI and <code>false</code>
otherwise.
</li>
<li>
If <var>applyPausePolicy</var> is <code>true</code>, run the following
If <var>implementPausePolicy</var> is <code>true</code>, run the following
substeps:
<ol>
<li>
Expand Down Expand Up @@ -983,18 +983,30 @@ interface MediaSession {
</li>
<li>Resolve <var>p</var> with <code>undefined</code>.</li>
<li>
If <var>applyPausePolicy</var> is <code>true</code>, run the following
If <var>implementPausePolicy</var> is <code>true</code>, run the following
substeps:
<ol>
<li>
Let <var>newMutedState</var> be <code>true</code> if
<var>active</var> is
<code>false</code> and <code>false</code> otherwise.</li>
<li>
For each {{MediaStreamTrack}} whose source is of type
<var>captureKind</var>,
<a>queue a task</a> to [$set a track's muted state$] to
<var>newMutedState</var>.
For each {{MediaStreamTrack}} <var>track</var> whose source
is of type <var>captureKind</var>, <a>queue a task</a> to run
the following substep:
<ol>
<li>
Provided <var>track</var> is not [=MediaStreamTrack/muted=]
by the user agent for reasons that override its [=pausing all
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In this case, we might be again in capture state UI out of sync with the device mute state.
It seems to me that, in the usual case of capturing with only one device, UA should instead deny the request.

It is really only when there are multiple capture devices that is fine to do what you are suggesting (In that case the capture state UI will also be in sync since at least one device will restart capture).

It seems a note for implementors stating the reasons to override and/or deny might be helpful.

input sources | pausing policy=],
[$set a track's muted state | set the muted state$] of
<var>track</var> to <var>newMutedState</var>.
</li>
<p class=note>
Overriding reasons might include a physical mute button on
the device.
</p>
</ol>
</li>
</ol>
</li>
Expand Down
Loading