diff --git a/getusermedia.html b/getusermedia.html index 0874d7d6..42c0f7d8 100644 --- a/getusermedia.html +++ b/getusermedia.html @@ -847,13 +847,17 @@

Life-cycle

If all {{MediaStreamTrack}}s that are using the same source are [= track/ended =], the source will be [= source/stopped =].

-

When a {{MediaStreamTrack}} object ends for any - reason (e.g., because the user rescinds the permission for the page to - use the local camera, or because the application invoked the - {{MediaStreamTrack/stop()}} method on - the {{MediaStreamTrack}} object, or because the User - Agent has instructed the track to end for any reason) it is said to be +

After the application has invoked the {{MediaStreamTrack/stop()}} + method on a {{MediaStreamTrack}} object, or once the [=source=] of a + {{MediaStreamTrack}} permanently ends production of live samples to its tracks, + whichever is sooner, a {{MediaStreamTrack}} is said to be ended.

+

For camera and microphone sources, the reasons for a source to + [=track/ended|end=] besides {{MediaStreamTrack/stop()}} are + [=implementation-defined=] + (e.g., because the user rescinds the permission for the page to + use the local camera, or because the User + Agent has instructed the track to end for any reason).

When a {{MediaStreamTrack}} track ends for any reason other than the {{MediaStreamTrack/stop()}} method being invoked, the [=User Agent=] MUST queue a task that runs the following @@ -899,12 +903,15 @@

Media Flow

muted, and enabled / disabled.

Muted refers to the input to the - {{MediaStreamTrack}}. If live samples are not made - available to the {{MediaStreamTrack}} it is muted.

+ {{MediaStreamTrack}}. Live samples MUST NOT be made available to a + {{MediaStreamTrack}} while it is [=muted=].

{{Muted}} is outside the control of web applications, but can be observed by the application by reading the {{MediaStreamTrack/muted}} attribute and listening - to the associated events {{mute}} and {{unmute}}. There can be - several reasons for a {{MediaStreamTrack}} to be muted: + to the associated events {{mute}} and {{unmute}}. The reasons for a + {{MediaStreamTrack}} to be muted are defined by its source.

+

For camera and microphone sources, the reasons to [=muted|mute=] are + [=implementation-defined=]. This allows user agents to implement privacy + mitigations in situations like: the user pushing a physical mute button on the microphone, the user closing a laptop lid with an embedded camera, the user toggling a control in the operating system, the user clicking a mute button in the @@ -915,9 +922,13 @@

Media Flow

this information to the web application through {{MediaStreamTrack/muted}} and its associated events.

-

Whenever the [=User Agent=] initiates such a change, it MUST queue a +

Whenever the [=User Agent=] initiates such an [= implementation-defined=] + change for camera or microphone sources, it MUST queue a task, using the user interaction task source, to [=set a track's muted state=] to the state desired by the user.

+
This does not apply to [=source|sources=] defined in + other specifications. Other specifications need to define their own steps + to [=set a track's muted state=] if desired.

To set a track's muted state to newState, the [=User Agent=] MUST run the following steps:

    @@ -5671,8 +5682,7 @@

    Extensibility

    specification may be extended. Two likely extension points are defining a new media type and defining a new constrainable property.

    -

    Defining a new media type (beyond the existing Audio and Video - types)

    +

    Defining a new {{MediaStreamTrack/kind}} of media (beyond audio and video)

    At a minimum, defining a new media type would require

    -

     

    -

    It is also likely that new consumers of {{MediaStream}}s - or {{MediaStreamTrack}}s will be defined in the future. The - following section provides guidance.

    -

    Defining new consumers of {{MediaStream}}s and {{MediaStreamTrack}}s

    -

    At a minimum, any new consumer of a - {{MediaStreamTrack}} will need to define

    +

    Defining a new sink for {{MediaStreamTrack}} and {{MediaStream}}

    +

    Other specs can define new sinks for {{MediaStream}} and/or + {{MediaStreamTrack}}. At a minimum, a new consumer of a + {{MediaStreamTrack}} will need to define:

    +
    +

    Defining a new source of {{MediaStreamTrack}}

    +

    Other specs can define new sources of {{MediaStreamTrack}}. + At a minimum, a new source of {{MediaStreamTrack}} will need to

    + +

    Acknowledgements