- From: CVS User dburnett <cvsmail@w3.org>
- Date: Fri, 20 Jun 2014 02:36:32 +0000
- To: public-dap-commits@w3.org
Update of /sources/public/2011/webrtc/editor/sources In directory roscoe:/tmp/cvs-serv5025/sources Modified Files: getusermedia.css getusermedia.html getusermedia.js Log Message: Added 20140619 archived version. --- /sources/public/2011/webrtc/editor/sources/getusermedia.css 2013/11/05 18:10:45 1.1 +++ /sources/public/2011/webrtc/editor/sources/getusermedia.css 2014/06/20 02:36:32 1.2 @@ -1,4 +1,3 @@ - @media screen { html { background: #eeeeee; } body { margin-bottom: 30%; border-bottom: thin solid #3c790a; } --- /sources/public/2011/webrtc/editor/sources/getusermedia.html 2014/05/08 02:05:54 1.4 +++ /sources/public/2011/webrtc/editor/sources/getusermedia.html 2014/06/20 02:36:32 1.5 @@ -59,6 +59,12 @@ contains.</p> + <p>Conformance requirements phrased as algorithms or specific steps may be + implemented in any manner, so long as the end result is equivalent. (In + particular, the algorithms defined in this specification are intended to be + easy to follow, and not intended to be performant.)</p> + + <p>Implementations that use ECMAScript to implement the APIs defined in this specification must implement them in a manner consistent with the ECMAScript Bindings defined in the Web IDL specification [[!WEBIDL]], as @@ -175,7 +181,7 @@ <p>Although settings are a property of the source, they are only exposed to the application through the tracks attached to - the source. The <a>Constrainable</a> interface provides this + the source. The <a>ConstrainablePattern</a> interface provides this exposure.</p> @@ -220,7 +226,7 @@ corresponding capability that describes whether it is supported by the source and if so, what the range of supported values are. As with settings, capabilities are exposed to the - application via the <a>Constrainable</a> interface.</p> + application via the <a>ConstrainablePattern</a> interface.</p> <p>The values of the supported capabilities must be normalized to the @@ -253,7 +259,7 @@ <p>Constraints are exposed on tracks via - the <a>Constrainable</a> interface, which includes an API for + the <a>ConstrainablePattern</a> interface, which includes an API for dynamically changing constraints. Note that <a>getUserMedia()</a> also permits an initial set of constraints to be applied when the track is first @@ -261,7 +267,7 @@ <p>It is possible for two tracks that share a unique source to - apply contradictory constraints. The <a>Constrainable</a> + apply contradictory constraints. The <a>ConstrainablePattern</a> interface supports the calling of an error handler when the conflicting constraint is requested. After successful application of constraints on a track (and its associated @@ -297,20 +303,20 @@ <h2>Introduction</h2> - <p>The <code><a>MediaStream</a></code> interface is used to represent - streams of media data, typically (but not necessarily) of audio and/or - video content, e.g. from a local camera. The data from a - <code><a>MediaStream</a></code> object does not necessarily have a - canonical binary form; for example, it could just be "the video currently - coming from the user's video camera". This allows user agents to - manipulate media streams in whatever fashion is most suitable on the - user's platform.</p> + <p>The two main components in the MediaStream API are the <code> + <a>MediaStreamTrack</a></code> and the <code><a>MediaStream</a></code> + interfaces. The <code><a>MediaStreamTrack</a></code> object represents + media originating from a single media source in the user agent, e.g. + video from a web camera. A <code><a>MediaStream</a></code> is used group + several <code><a>MediaStreamTrack</a></code> objects into one unit that + can be rendered in a media element or recorded.</p> - <p>Each <code><a>MediaStream</a></code> object can contain zero or more - tracks, in particular audio and video tracks. All tracks in a MediaStream - are intended to be synchronized when rendered. Different MediaStreams do - not need to be synchronized.</p> + <p>Each <code><a>MediaStream</a></code> can contain zero or more <code> + <a>MediaStreamTrack</a></code> objects. All tracks in a <code> + <a>MediaStream</a></code> are intended to be synchronized when + rendered. Different <code><a>MediaStream</a></code> objects do not need + to be synchronized.</p> <p class="note">While the intent is to synchronize tracks, it could be @@ -322,44 +328,24 @@ playback and the effect that these have on user perception.</p> - <p>Each track in a MediaStream object has a corresponding - <code><a>MediaStreamTrack</a></code> object.</p> - - <p>A <code><a>MediaStreamTrack</a></code> represents content comprising one or more channels, where the channels have a defined well known - relationship to each other (such as a stereo or 5.1 audio signal).</p> + relationship to each other (such as a stereo or 5.1 audio signal). A + channel is the smallest unit considered in this API specification.</p> - <p>A channel is the smallest unit considered in this API - specification.</p> + <p><img alt="A MediaStream" src="images/media-stream.png" width="418" /> + </p> - <p>A <code><a>MediaStream</a></code> object has an input and an output. - The input depends on how the object was created: a - <code><a>MediaStream</a></code> object generated by a <code><a href= - "#dom-navigator-getusermedia">getUserMedia()</a></code> call (which is - described later in this document), for instance, might take its input - from the user's local camera. The output of the object controls how the - object is used, e.g., what is saved if the object is written to a file or - what is displayed if the object is used in a <code>video</code> + <p>A <code><a>MediaStream</a></code> object has an input and an output + that represent the combined input and output of all the object's + tracks. The output of the <code><a>MediaStream</a></code> controls how + the object is rendered, e.g., what is saved if the object is recorded to + a file or what is displayed if the object is used in a <code>video</code> element.</p> - <p>Each track in a <code><a>MediaStream</a></code> object can be - disabled, meaning that it is muted in the object's output. All tracks are - initially enabled.</p> - - - <p>A <code><a>MediaStream</a></code> can be <dfn><a>finished</a></dfn>, - indicating that its inputs have forever stopped providing data.</p> - - - <p>The output of a <code><a>MediaStream</a></code> object MUST correspond - to the tracks in its input. Muted audio tracks MUST be replaced with - silence. Muted video tracks MUST be replaced with blackness.</p> - - <p>A new <code><a>MediaStream</a></code> object can be created from accessible media sources (that does not require any additional permissions) using the <code><a href= @@ -371,10 +357,6 @@ possible to compose a stream from different source streams.</p> - <p><img alt="A MediaStream" src="images/media-stream.png" width="418" /> - </p> - - <p>Both <code><a>MediaStream</a></code> and <code><a>MediaStreamTrack</a></code> objects can be cloned. This allows for greater control since the separate instances can be manipulated and @@ -477,13 +459,6 @@ </ol> - <p>A <code><a>MediaStream</a></code> can have multiple audio and video - sources (e.g. because the user has multiple microphones, or because the - real source of the stream is a media resource with many media tracks). - The stream represented by a <code><a>MediaStream</a></code> thus has zero - or more tracks.</p> - - <p>The tracks of a <code><a>MediaStream</a></code> are stored in a <dfn id="track-set">track set</dfn>. The track set MUST contain the <code><a>MediaStreamTrack</a></code> objects that correspond to the @@ -625,6 +600,25 @@ </dd> + <dt>sequence<MediaStreamTrack> getTracks()</dt> + + + <dd> + <p>Returns a sequence of <code><a>MediaStreamTrack</a></code> objects + representing all the tracks in this stream.</p> + + + <p>The <dfn id= + "dom-mediastream-gettracks"><code>getTracks()</code></dfn> + method MUST return a sequence that represents a snapshot of all the + <code><a>MediaStreamTrack</a></code> objects in this stream's + <a href="#track-set">track set</a>, regardless of kind. The + conversion from the <a href="#track-set">track set</a> to the + sequence is user agent defined and the order does not have to stable + between calls.</p> + </dd> + + <dt>MediaStreamTrack? getTrackById(DOMString trackId)</dt> @@ -799,10 +793,18 @@ source in the user agent. Several <code><a>MediaStreamTrack</a></code> objects can represent the same media source, e.g., when the user chooses the same camera in the UI shown by two consecutive calls to - <code><a href="#dom-navigator-getusermedia">getUserMedia()</a></code> + <code><a href="#dom-mediadevices-getusermedia">getUserMedia()</a></code> .</p> + <p>The data from a + <code><a>MediaStreamTrack</a></code> object does not necessarily have a + canonical binary form; for example, it could just be "the video currently + coming from the user's video camera". This allows user agents to + manipulate media in whatever fashion is most suitable on the user's + platform.</p> + + <p>A script can indicate that a track no longer needs its source with the <code><a href= "#dom-mediastreamtrack-stop">MediaStreamTrack.stop()</a></code> method. @@ -820,85 +822,62 @@ <section> <h3>Life-cycle and Media Flow</h3> - + <h4>Life-cycle</h4> <p>A <code><a>MediaStreamTrack</a></code> has three stages in its - lifecycle; <code>new</code>, <code>live</code> and <code>ended</code>. - A track begins as <code>new</code> prior to being connected to an - active source.</p> - + life-cycle: <code>new</code>, <code>live</code> and <code>ended</code>. + A track begins as <code>new</code> prior to being connected to a + source. The current stage is reflected by the object's <code><a href= + "#dom-mediastreamtrack-readystate">readyState</a></code> attribute.</p> + + <p class="note">This document describres no way to create a + <code><a>MediaStreamTrack</a></code> that is _not_ connected to + a source. <code>new</code> allows for future extensions. </p> <p>Once connected, the <code><a href= "#event-mediastreamtrack-started">started</a></code> event fires and the track becomes <code>live</code>. In the <code>live</code> state, - the track is active and media is available for rendering at a - <code><a>MediaStream</a></code> <a>consumer</a>.</p> - - - <p>A muted or disabled <code><a>MediaStreamTrack</a></code> renders - either silence (audio), black frames (video), or a - zero-information-content equivalent. For example, a video element - sourced by a muted or disabled <code><a>MediaStreamTrack</a></code> - (contained within a <code><a>MediaStream</a></code>), is playing but - the rendered content is the muted output.</p> - - - <p>The muted/unmuted state of a track reflects if the source provides - any media at this moment. The enabled/disabled state is under - application control and determines if the track outputs media (to its - consumers). Hence, media from the source only flows when a - <code><a>MediaStreamTrack</a></code> object is both unmuted and - enabled.</p> - - - <p>A <code><a>MediaStreamTrack</a></code> is <dfn id= - "track-muted">muted</dfn> when the source is temporarily unable to - provide the track with data. A track can be muted by a user. Often this - action is outside the control of the application. This could be as a - result of the user hitting a hardware switch, or toggling a control in - the operating system or browser chrome. A track can also be muted by - the user agent.</p> - - - <p>Applications are able to <dfn id="track-enabled">enable</dfn> or - disable a <code><a>MediaStreamTrack</a></code> to prevent it from - rendering media from the source. A muted track will however, regardless - of the enabled state, render silence and blackness. A disabled track is - logically equivalent to a muted track, from a consumer point of - view.</p> - - - <p>For a newly created <code><a>MediaStreamTrack</a></code> object, the - following applies. The track is always enabled unless stated otherwise - (for example when cloned) and the muted state reflects the state of the - source at the time the track is created.</p> - + the track is active and media is available for use by consumers (but + may be replaced by zero-information-content if the + <code><a>MediaStreamTrack</a></code> is <a href= + "#track-muted">muted</a> or <a href="#track-enabled">enabled</a>, see + below).</p> <p>A <code><a>MediaStreamTrack</a></code> object is said to <em>end</em> when the source of the track is disconnected or exhausted.</p> + <p>A <code><a>MediaStreamTrack</a></code> can be <dfn id= + "track-detached">detached</dfn> from its source. It means that the + track is no longer dependent on the source for media data. If no other + <code><a>MediaStreamTrack</a></code> is using the same source, the + source will be <a href="#source-stopped">stopped</a>. <code> + <a>MediaStreamTrack</a></code> attributes such as <code><a href= + "#dom-mediastreamtrack-kind">kind</a></code> and <code><a href= + "#dom-mediastreamtrack-label">label</a></code> MUST not change values + when the source is detached.</p> + + <p>When a <code><a>MediaStreamTrack</a></code> object ends for any reason (e.g., because the user rescinds the permission for the page to use the local camera, or because the data comes from a finite file and the file's end has been reached and the user has not requested that it - be looped, or because the UA has instructed the track to end for any - reason, it is said to be ended. When track instance <var>track</var> + be looped, or because the application invoked the <code><a href= + "#dom-mediastreamtrack-stop">stop()</a></code> method on + the <code><a>MediaStreamTrack</a></code> object, or because the UA has + instructed the track to end for any reason) it is said to be ended.</p> + + <p>When a <code><a>MediaStreamTrack</a></code> <var>track</var> ends for any reason other than the <code><a href= - "#dom-mediastreamtrack-stop">stop()</a></code> method being invoked on - the <code><a>MediaStreamTrack</a></code> object that represents - <var>track</var>, the user agent MUST queue a task that runs the - following steps:</p> + "#dom-mediastreamtrack-stop">stop()</a></code> method being invoked, + the user agent MUST queue a task that runs the following steps:</p> <ol> <li> - <p>If the track's <code><a href= + <p>If the <var>track's</var> <code><a href= "#dom-mediastreamtrack-readystate">readyState</a></code> attribute - has the value <code>ended</code> already, then abort these steps. - (The <code><a href="#dom-mediastreamtrack-stop">stop()</a></code> - method was probably called just before the track stopped for other - reasons.)</p> + has the value <code>ended</code> already, then abort these steps.</p> </li> @@ -909,12 +888,8 @@ </li> <li> - <p>Detach <var>track's</var> source.</p> - - - <p>If no other <code><a>MediaStreamTrack</a></code> is using - the same source, the source will be <a href= - "#source-stopped">stopped</a>.</p> + <p><a href="#track-detached">Detach</a> <var>track's</var> + source.</p> </li> <li> @@ -927,6 +902,51 @@ <p>If the end of the stream was reached due to a user request, the event source for this event is the user interaction event source.</p> + + <h4>Media Flow</h4> + + <p>There are two concepts related to the media flow for a + <code>live</code> <code><a>MediaStreamTrack</a></code>: muted or not, + and enabled or disabled.</p> + + <p><dfn id="track-muted">Muted</dfn> refers to the input to the + <code><a>MediaStreamTrack</a></code>. + If live samples are not made available to the <code> + <a>MediaStreamTrack</a></code> it is muted.</p> + + <p>Muted is out of control for the application, but can be observed by + the application by reading the <code> + <a href="#dom-mediastreamtrack-muted">muted</a></code> + attribute and listening to the associated events <code> + <a href="#event-mediastreamtrack-mute">mute</a></code> and <code> + <a href="#event-mediastreamtrack-unmute">unmute</a></code>.There can + be several reasons for a <code><a>MediaStreamTrack</a></code> to be + muted: the user pushing a physical mute button on the microphone, the + user toggling a control in the operating system, the user clicking a + mute button in the browser chrome, the UA (on behalf of the user) + mutes, etc.</p> + + <p><dfn id="track-enabled">Enabled/disabled</dfn> on the other hand is + available to application to control (and observe) via the <code> + <a href="#dom-mediastreamtrack-enabled">enabled</a></code> attribute.</p> + + <p>The result for the consumer is the same in the meaning that + whenever <code><a>MediaStreamTrack</a></code> is muted or disabled + (or both) the consumer gets zero-information-content, which means + silence for audio and black frames for video. In other words, media + from the source only flows when a <code><a>MediaStreamTrack</a></code> + object is both unmuted and enabled. For example, a video + element sourced by a muted or disabled <code> + <a>MediaStreamTrack</a></code> (contained in a <code> + <a>MediaStream</a></code>), is playing but rendering blackness.</p> + + <p>For a newly created <code><a>MediaStreamTrack</a></code> object, the + following applies: the track is always enabled unless stated otherwise + (for example when cloned) and the muted state reflects the state of the + source at the time the track is created.</p> + + + </section> @@ -939,7 +959,7 @@ <p>Whether <code><a>Constraints</a></code> were provided at track [1444 lines skipped] --- /sources/public/2011/webrtc/editor/sources/getusermedia.js 2014/05/08 02:05:54 1.4 +++ /sources/public/2011/webrtc/editor/sources/getusermedia.js 2014/06/20 02:36:32 1.5 @@ -12,14 +12,14 @@ // publishDate: "2009-08-06", // new ability to override the copyright completely - overrideCopyright: "<p class='copyright'>Initial Author of this Specification was Ian Hickson, Google Inc., with the following copyright statement:<br /> © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and Opera Software ASA. You are granted a license to use, reproduce and create derivative works of this document.<\/p> <p class='copyright'>All subsequent changes since 26 July 2011 done by the W3C WebRTC Working Group and the Device APIs Working Group are under the following <a href='http://www.w3.org/Consortium/Legal/ipr-notice#Copyright'>Copyright<\/a>:<br />© 2011-2013 <a href='http://www.w3.org/'><acronym title='World Wide Web Consortium'>W3C<\/acronym><\/a><sup>®<\/sup> (<a href='http://www.csail.mit.edu/'><acronym title='Massachusetts Institute of Technology'>MIT<\/acronym><\/a>, <a href='http://www.ercim.eu/'><acronym title='European Research Consortium for Informatics and Mathematics'>ERCIM<\/acronym><\/a>, <a href='http://www.keio.ac.jp/'>Keio<\/a>, <a href='http:/ev.buaa.edu.cn/'>Beihang<\/a>), All Rights Reserved. <a href='http://www.w3.org/Consortium/Legal/copyright-documents'>Document use<\/a> rules apply.<\/p> <p class='copyright'>For the entire publication on the W3C site the <a href='http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer'>liability<\/a> and <a href='http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks'>trademark<\/a> rules apply.<\/p>", + overrideCopyright: "<p class='copyright'>Initial Author of this Specification was Ian Hickson, Google Inc., with the following copyright statement:<br /> © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and Opera Software ASA. You are granted a license to use, reproduce and create derivative works of this document.<\/p> <p class='copyright'>All subsequent changes since 26 July 2011 done by the W3C WebRTC Working Group and the Device APIs Working Group are under the following <a href='http://www.w3.org/Consortium/Legal/ipr-notice#Copyright'>Copyright<\/a>:<br />© 2011-2014 <a href='http://www.w3.org/'><acronym title='World Wide Web Consortium'>W3C<\/acronym><\/a><sup>®<\/sup> (<a href='http://www.csail.mit.edu/'><acronym title='Massachusetts Institute of Technology'>MIT<\/acronym><\/a>, <a href='http://www.ercim.eu/'><acronym title='European Research Consortium for Informatics and Mathematics'>ERCIM<\/acronym><\/a>, <a href='http://www.keio.ac.jp/'>Keio<\/a>, <a href='http:/ev.buaa.edu.cn/'>Beihang<\/a>), All Rights Reserved. <a href='http://www.w3.org/Consortium/Legal/copyright-documents'>Document use<\/a> rules apply.<\/p> <p class='copyright'>For the entire publication on the W3C site the <a href='http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer'>liability<\/a> and <a href='http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks'>trademark<\/a> rules apply.<\/p>", // if the specification's copyright date is a range of years, specify // the start date here: // copyrightStart: "2005", // if there is a previously published draft, uncomment this and set its YYYY-MM-DD - prevED: "http://dev.w3.org/2011/webrtc/editor/archives/20140321/getusermedia.html", + prevED: "http://dev.w3.org/2011/webrtc/editor/archives/20140507/getusermedia.html", // if there a publicly available Editor's Draft, this is the link edDraftURI: "http://dev.w3.org/2011/webrtc/editor/getusermedia.html",
Received on Friday, 20 June 2014 02:36:35 UTC