CVS 2011/webrtc/editor

Update of /sources/public/2011/webrtc/editor
In directory roscoe:/tmp/cvs-serv5025

Modified Files:
	getusermedia.html 
Log Message:
Added 20140619 archived version.

--- /sources/public/2011/webrtc/editor/getusermedia.html	2014/05/08 02:05:53	1.31
+++ /sources/public/2011/webrtc/editor/getusermedia.html	2014/06/20 02:36:31	1.32
@@ -467,7 +467,7 @@
   </p>
   <h1 class="title p-name" id="title" property="dcterms:title">Media Capture and Streams</h1>
   
-  <h2 id="w3c-editor-s-draft-07-may-2014" property="dcterms:issued" datatype="xsd:dateTime" content="2014-05-08T01:01:25.000Z"><acronym title="World Wide Web Consortium">W3C</acronym> Editor's Draft <time class="dt-published" datetime="2014-05-07">07 May 2014</time></h2>
+  <h2 id="w3c-editor-s-draft-19-june-2014" property="dcterms:issued" datatype="xsd:dateTime" content="2014-06-20T02:02:40.000Z"><acronym title="World Wide Web Consortium">W3C</acronym> Editor's Draft <time class="dt-published" datetime="2014-06-19">19 June 2014</time></h2>
   <dl>
     
       <dt>This version:</dt>
@@ -485,7 +485,7 @@
     
       
         <dt>Previous editor's draft:</dt>
-        <dd><a href="http://dev.w3.org/2011/webrtc/editor/archives/20140321/getusermedia.html">http://dev.w3.org/2011/webrtc/editor/archives/20140321/getusermedia.html</a></dd>
+        <dd><a href="http://dev.w3.org/2011/webrtc/editor/archives/20140507/getusermedia.html">http://dev.w3.org/2011/webrtc/editor/archives/20140507/getusermedia.html</a></dd>
       
     
     
@@ -508,7 +508,7 @@
   
   
     
-      <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 <acronym title="World Wide Web Consortium">W3C</acronym> 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 hrf="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 <acronym title="World Wide Web Consortium">W3C</acronym> 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>
+      <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 <acronym title="World Wide Web Consortium">W3C</acronym> 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 hrf="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 <acronym title="World Wide Web Consortium">W3C</acronym> 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>
     
   
   <hr>
@@ -583,7 +583,7 @@
       
     
   
-</section><section id="toc"><h2 id="h2_toc" role="heading" aria-level="1" class="introductory">Table of Contents</h2><ul id="respecContents" role="directory" class="toc"><li class="tocline"><a class="tocxref" href="#intro"><span class="secno">1. </span>Introduction</a></li><li class="tocline"><a class="tocxref" href="#conformance"><span class="secno">2. </span>Conformance</a></li><li class="tocline"><a class="tocxref" href="#terminology"><span class="secno">3. </span>Terminology</a></li><li class="tocline"><a class="tocxref" href="#stream-api"><span class="secno">4. </span>MediaStream API</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#introduction"><span class="secno">4.1 </span>Introduction</a></li><li class="tocline"><a class="tocxref" href="#mediastream"><span class="secno">4.2 </span>MediaStream</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#constructors"><span class="secno">4.2.1 </span>Constructors</a></li><li class="tocline"><a class="tocxref" href="#attributes"><pan class="secno">4.2.2 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#methods"><span class="secno">4.2.3 </span>Methods</a></li></ul></li><li class="tocline"><a class="tocxref" href="#mediastreamtrack"><span class="secno">4.3 </span>MediaStreamTrack</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#life-cycle-and-media-flow"><span class="secno">4.3.1 </span>Life-cycle and Media Flow</a></li><li class="tocline"><a class="tocxref" href="#tracks-and-constraints"><span class="secno">4.3.2 </span>Tracks and Constraints</a></li><li class="tocline"><a class="tocxref" href="#media-stream-track-interface-definition"><span class="secno">4.3.3 </span>Interface Definition</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#attributes-1"><span class="secno">4.3.3.1 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#methods-1"><span class="secno">4.3.3.2 </span>Methods</a></li></ul></li><li class="tocline"><a class="tocxref" href="#track-source-tyes"><span class="secno">4.3.4 </span>Track Source Types</a></li><li class="tocline"><a class="tocxref" href="#media-track-constraints"><span class="secno">4.3.5 </span>MediaTrackConstraints</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#dictionary-mediatrackconstraints-members"><span class="secno">4.3.5.1 </span>Dictionary <span class="formerLink"><code>MediaTrackConstraints</code></span> Members</a></li><li class="tocline"><a class="tocxref" href="#dictionary-mediatrackconstraintset-members"><span class="secno">4.3.5.2 </span>Dictionary <span class="formerLink"><code>MediaTrackConstraintSet</code></span> Members</a></li></ul></li><li class="tocline"><a class="tocxref" href="#isolated-media-streams"><span class="secno">4.3.6 </span>Isolated Media Streams</a></li></ul></li><li class="tocline"><a class="tocxref" href="#mediastreamtrackevent"><span class="secno">4.4 </span>MediaStreamTrackEvent</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#constructors-1"><span class="secno>4.4.1 </span>Constructors</a></li><li class="tocline"><a class="tocxref" href="#attributes-2"><span class="secno">4.4.2 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#dictionary-mediastreamtrackeventinit-members"><span class="secno">4.4.3 </span>Dictionary <span class="formerLink"><code>MediaStreamTrackEventInit</code></span> Members</a></li></ul></li></ul></li><li class="tocline"><a class="tocxref" href="#the-model-sources-sinks-constraints-and-settings"><span class="secno">5. </span>The model: sources, sinks, constraints, and settings</a></li><li class="tocline"><a class="tocxref" href="#mediastreams-as-media-elements"><span class="secno">6. </span>MediaStreams as Media Elements</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#direct-assignment-to-media-elements"><span class="secno">6.1 </span>Direct Assignment to Media Elements</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#attributes-3"><span class="secno">6.1.1 </span>Attributes</a></li></ul><li><li class="tocline"><a class="tocxref" href="#loading-and-playing-a-mediastream-in-a-media-element"><span class="secno">6.2 </span>Loading and Playing a MediaStream in a Media Element</a></li><li class="tocline"><a class="tocxref" href="#media-element-attributes-when-playing-a-mediastream"><span class="secno">6.3 </span>Media Element Attributes when Playing a MediaStream</a></li></ul></li><li class="tocline"><a class="tocxref" href="#error-handling"><span class="secno">7. </span>Error Handling</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#attributes-4"><span class="secno">7.1 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#constructors-2"><span class="secno">7.2 </span>Constructors</a></li><li class="tocline"><a class="tocxref" href="#attributes-5"><span class="secno">7.3 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#dictionary-mediastreamerroreventinit-members"><span class="secno">7.4 </span>Dictionary <span class="formerLink"><code>MeiaStreamErrorEventInit</code></span> Members</a></li></ul></li><li class="tocline"><a class="tocxref" href="#event-summary"><span class="secno">8. </span>Event summary</a></li><li class="tocline"><a class="tocxref" href="#enumerating-devices"><span class="secno">9. </span>Enumerating Local Media Devices</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#navigatorusermedia"><span class="secno">9.1 </span>NavigatorUserMedia</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#methods-2"><span class="secno">9.1.1 </span>Methods</a></li></ul></li><li class="tocline"><a class="tocxref" href="#device-info"><span class="secno">9.2 </span>Device Info</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#callback-mediadeviceinfocallback-parameters"><span class="secno">9.2.1 </span>Callback <span class="formerLink"><code>MediaDeviceInfoCallback</code></span> Parameters</a></li><li class="tocline"><a class="tocxref" href="#dictionary-mediadeviceinfo-members"><span class="secno">9.22 </span>Dictionary <span class="formerLink"><code>MediaDeviceInfo</code></span> Members</a></li></ul></li></ul></li><li class="tocline"><a class="tocxref" href="#local-content"><span class="secno">10. </span>Obtaining local multimedia content</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#navigatorusermedia-interface-extensions"><span class="secno">10.1 </span>NavigatorUserMedia Interface Extensions</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#methods-3"><span class="secno">10.1.1 </span>Methods</a></li></ul></li><li class="tocline"><a class="tocxref" href="#mediastreamconstraints"><span class="secno">10.2 </span>MediaStreamConstraints</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#dictionary-mediastreamconstraints-members"><span class="secno">10.2.1 </span>Dictionary <span class="formerLink"><code>MediaStreamConstraints</code></span> Members</a></li></ul></li><li class="tocline"><a class="tocxref" href="#navigatorusermediasuccesscallback"><span class"secno">10.3 </span>NavigatorUserMediaSuccessCallback</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#callback-navigatorusermediasuccesscallback-parameters"><span class="secno">10.3.1 </span>Callback <span class="formerLink"><code>NavigatorUserMediaSuccessCallback</code></span> Parameters</a></li></ul></li><li class="tocline"><a class="tocxref" href="#navigatorusermediaerrorcallback"><span class="secno">10.4 </span>NavigatorUserMediaErrorCallback</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#callback-navigatorusermediaerrorcallback-parameters"><span class="secno">10.4.1 </span>Callback <span class="formerLink"><code>NavigatorUserMediaErrorCallback</code></span> Parameters</a></li></ul></li><li class="tocline"><a class="tocxref" href="#implementation-suggestions"><span class="secno">10.5 </span>Implementation Suggestions</a></li></ul></li><li class="tocline"><a class="tocxref" href="#constrainable-interface"><span class="secno">11. </span>Constrainable Pattern</a><ul class"toc"><li class="tocline"><a class="tocxref" href="#interface-definition"><span class="secno">11.1 </span>Interface Definition</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#attributes-6"><span class="secno">11.1.1 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#methods-4"><span class="secno">11.1.2 </span>Methods</a></li><li class="tocline"><a class="tocxref" href="#applyconstraints-failure-callback"><span class="secno">11.1.3 </span>applyConstraints Failure Callback</a><ul class="toc"></ul></li></ul></li><li class="tocline"><a class="tocxref" href="#registry"><span class="secno">11.2 </span>The Property Registry</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#dictionary-constraindoublerange-members"><span class="secno">11.2.1 </span>Dictionary <span class="formerLink"><code>ConstrainDoubleRange</code></span> Members</a></li><li class="tocline"><a class="tocxref" href="#dictionary-constrainlongrange-members"><span class="secno">11.2.2 </span>Dictioary <span class="formerLink"><code>ConstrainLongRange</code></span> Members</a></li></ul></li><li class="tocline"><a class="tocxref" href="#capabilities"><span class="secno">11.3 </span>Capabilities</a></li><li class="tocline"><a class="tocxref" href="#settings"><span class="secno">11.4 </span><span>Settings</span>
+</section><section id="toc"><h2 id="h2_toc" role="heading" aria-level="1" class="introductory">Table of Contents</h2><ul id="respecContents" role="directory" class="toc"><li class="tocline"><a class="tocxref" href="#intro"><span class="secno">1. </span>Introduction</a></li><li class="tocline"><a class="tocxref" href="#conformance"><span class="secno">2. </span>Conformance</a></li><li class="tocline"><a class="tocxref" href="#terminology"><span class="secno">3. </span>Terminology</a></li><li class="tocline"><a class="tocxref" href="#stream-api"><span class="secno">4. </span>MediaStream API</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#introduction"><span class="secno">4.1 </span>Introduction</a></li><li class="tocline"><a class="tocxref" href="#mediastream"><span class="secno">4.2 </span>MediaStream</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#constructors"><span class="secno">4.2.1 </span>Constructors</a></li><li class="tocline"><a class="tocxref" href="#attributes"><pan class="secno">4.2.2 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#methods"><span class="secno">4.2.3 </span>Methods</a></li></ul></li><li class="tocline"><a class="tocxref" href="#mediastreamtrack"><span class="secno">4.3 </span>MediaStreamTrack</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#life-cycle-and-media-flow"><span class="secno">4.3.1 </span>Life-cycle and Media Flow</a></li><li class="tocline"><a class="tocxref" href="#tracks-and-constraints"><span class="secno">4.3.2 </span>Tracks and Constraints</a></li><li class="tocline"><a class="tocxref" href="#media-stream-track-interface-definition"><span class="secno">4.3.3 </span>Interface Definition</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#attributes-1"><span class="secno">4.3.3.1 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#methods-1"><span class="secno">4.3.3.2 </span>Methods</a></li></ul></li><li class="tocline"><a class="tocxref" href="#track-source-tyes"><span class="secno">4.3.4 </span>Track Source Types</a></li><li class="tocline"><a class="tocxref" href="#media-track-constraints"><span class="secno">4.3.5 </span>MediaTrackConstraints</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#dictionary-mediatrackconstraints-members"><span class="secno">4.3.5.1 </span>Dictionary <span class="formerLink"><code>MediaTrackConstraints</code></span> Members</a></li><li class="tocline"><a class="tocxref" href="#dictionary-mediatrackconstraintset-members"><span class="secno">4.3.5.2 </span>Dictionary <span class="formerLink"><code>MediaTrackConstraintSet</code></span> Members</a></li></ul></li><li class="tocline"><a class="tocxref" href="#isolated-media-streams"><span class="secno">4.3.6 </span>Isolated Media Streams</a></li></ul></li><li class="tocline"><a class="tocxref" href="#mediastreamtrackevent"><span class="secno">4.4 </span>MediaStreamTrackEvent</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#constructors-1"><span class="secno>4.4.1 </span>Constructors</a></li><li class="tocline"><a class="tocxref" href="#attributes-2"><span class="secno">4.4.2 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#dictionary-mediastreamtrackeventinit-members"><span class="secno">4.4.3 </span>Dictionary <span class="formerLink"><code>MediaStreamTrackEventInit</code></span> Members</a></li></ul></li></ul></li><li class="tocline"><a class="tocxref" href="#the-model-sources-sinks-constraints-and-settings"><span class="secno">5. </span>The model: sources, sinks, constraints, and settings</a></li><li class="tocline"><a class="tocxref" href="#mediastreams-as-media-elements"><span class="secno">6. </span>MediaStreams as Media Elements</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#direct-assignment-to-media-elements"><span class="secno">6.1 </span>Direct Assignment to Media Elements</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#attributes-3"><span class="secno">6.1.1 </span>Attributes</a></li></ul><li><li class="tocline"><a class="tocxref" href="#loading-and-playing-a-mediastream-in-a-media-element"><span class="secno">6.2 </span>Loading and Playing a MediaStream in a Media Element</a></li><li class="tocline"><a class="tocxref" href="#media-element-attributes-when-playing-a-mediastream"><span class="secno">6.3 </span>Media Element Attributes when Playing a MediaStream</a></li></ul></li><li class="tocline"><a class="tocxref" href="#error-handling"><span class="secno">7. </span>Error Handling</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#attributes-4"><span class="secno">7.1 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#constructors-2"><span class="secno">7.2 </span>Constructors</a></li><li class="tocline"><a class="tocxref" href="#attributes-5"><span class="secno">7.3 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#dictionary-mediastreamerroreventinit-members"><span class="secno">7.4 </span>Dictionary <span class="formerLink"><code>MeiaStreamErrorEventInit</code></span> Members</a></li></ul></li><li class="tocline"><a class="tocxref" href="#event-summary"><span class="secno">8. </span>Event summary</a></li><li class="tocline"><a class="tocxref" href="#enumerating-devices"><span class="secno">9. </span>Enumerating Local Media Devices</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#navigatorusermedia"><span class="secno">9.1 </span>NavigatorUserMedia</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#attributes-6"><span class="secno">9.1.1 </span>Attributes</a></li></ul></li><li class="tocline"><a class="tocxref" href="#mediadevices"><span class="secno">9.2 </span>MediaDevices</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#attributes-7"><span class="secno">9.2.1 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#methods-2"><span class="secno">9.2.2 </span>Methods</a></li></ul></li><li class="tocline"><a class="tocxref" href="#device-info"><span class="secno">9.3 </span>evice Info</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#callback-mediadeviceinfocallback-parameters"><span class="secno">9.3.1 </span>Callback <span class="formerLink"><code>MediaDeviceInfoCallback</code></span> Parameters</a></li><li class="tocline"><a class="tocxref" href="#dictionary-mediadeviceinfo-members"><span class="secno">9.3.2 </span>Dictionary <span class="formerLink"><code>MediaDeviceInfo</code></span> Members</a></li></ul></li></ul></li><li class="tocline"><a class="tocxref" href="#local-content"><span class="secno">10. </span>Obtaining local multimedia content</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#navigatorusermedia-interface-extensions"><span class="secno">10.1 </span>NavigatorUserMedia Interface Extensions</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#methods-3"><span class="secno">10.1.1 </span>Methods</a></li></ul></li><li class="tocline"><a class="tocxref" href="#mediadevices-interface-extensions"><span class="secno">10.2 <span>MediaDevices Interface Extensions</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#methods-4"><span class="secno">10.2.1 </span>Methods</a></li></ul></li><li class="tocline"><a class="tocxref" href="#mediastreamconstraints"><span class="secno">10.3 </span>MediaStreamConstraints</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#dictionary-mediastreamconstraints-members"><span class="secno">10.3.1 </span>Dictionary <span class="formerLink"><code>MediaStreamConstraints</code></span> Members</a></li></ul></li><li class="tocline"><a class="tocxref" href="#navigatorusermediasuccesscallback"><span class="secno">10.4 </span>NavigatorUserMediaSuccessCallback</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#callback-navigatorusermediasuccesscallback-parameters"><span class="secno">10.4.1 </span>Callback <span class="formerLink"><code>NavigatorUserMediaSuccessCallback</code></span> Parameters</a></li></ul></li><li class="tocline"><a class="tocxref" href="#navigatorusrmediaerrorcallback"><span class="secno">10.5 </span>NavigatorUserMediaErrorCallback</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#callback-navigatorusermediaerrorcallback-parameters"><span class="secno">10.5.1 </span>Callback <span class="formerLink"><code>NavigatorUserMediaErrorCallback</code></span> Parameters</a></li></ul></li><li class="tocline"><a class="tocxref" href="#implementation-suggestions"><span class="secno">10.6 </span>Implementation Suggestions</a></li></ul></li><li class="tocline"><a class="tocxref" href="#constrainable-interface"><span class="secno">11. </span>Constrainable Pattern</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#interface-definition"><span class="secno">11.1 </span>Interface Definition</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#attributes-8"><span class="secno">11.1.1 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#methods-5"><span class="secno">11.1.2 </span>Methods</a></li><li class="toclie"><a class="tocxref" href="#applyconstraints-failure-callback"><span class="secno">11.1.3 </span>applyConstraints Failure Callback</a><ul class="toc"></ul></li></ul></li><li class="tocline"><a class="tocxref" href="#registry"><span class="secno">11.2 </span>The Property Registry</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#dictionary-constraindoublerange-members"><span class="secno">11.2.1 </span>Dictionary <span class="formerLink"><code>ConstrainDoubleRange</code></span> Members</a></li><li class="tocline"><a class="tocxref" href="#dictionary-constrainlongrange-members"><span class="secno">11.2.2 </span>Dictionary <span class="formerLink"><code>ConstrainLongRange</code></span> Members</a></li><li class="tocline"><a class="tocxref" href="#dictionary-constraindomstringparameters-members"><span class="secno">11.2.3 </span>Dictionary <span class="formerLink"><code>ConstrainDOMStringParameters</code></span> Members</a></li><li class="tocline"><a class="tocxref" href="#dictionary-constrainvieofacingmodeparameters-members"><span class="secno">11.2.4 </span>Dictionary <span class="formerLink"><code>ConstrainVideoFacingModeParameters</code></span> Members</a></li></ul></li><li class="tocline"><a class="tocxref" href="#capabilities"><span class="secno">11.3 </span>Capabilities</a></li><li class="tocline"><a class="tocxref" href="#settings"><span class="secno">11.4 </span><span>Settings</span>
       </a></li><li class="tocline"><a class="tocxref" href="#constraints"><span class="secno">11.5 </span><span>Constraints and ConstraintSet</span>
       </a><ul class="toc"><li class="tocline"><a class="tocxref" href="#dictionary-constraints-members"><span class="secno">11.5.1 </span>Dictionary <span class="formerLink"><code>Constraints</code></span> Members</a></li></ul></li></ul></li><li class="tocline"><a class="tocxref" href="#examples"><span class="secno">12. </span>Examples</a></li><li class="tocline"><a class="tocxref" href="#error-names"><span class="secno">13. </span>Error Names</a></li><li class="tocline"><a class="tocxref" href="#iana-registrations"><span class="secno">14. </span>IANA Registrations</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#track-property-registrations"><span class="secno">14.1 </span>Track Property Registrations</a></li></ul></li><li class="tocline"><a class="tocxref" href="#change-log"><span class="secno">15. </span>Change Log</a></li><li class="tocline"><a class="tocxref" href="#acknowledgements"><span class="secno">A. </span>Acknowledgements</a></li><li class="tocline"><a class="tocxref" href="#reerences"><span class="secno">B. </span>References</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#normative-references"><span class="secno">B.1 </span>Normative references</a></li><li class="tocline"><a class="tocxref" href="#informative-references"><span class="secno">B.2 </span>Informative references</a></li></ul></li></ul></section>
 
@@ -623,6 +623,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 [<cite><a href="#bib-WEBIDL" class="bibref">WEBIDL</a></cite>], as
@@ -733,7 +739,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 Constrainable interface provides this
+        the source.  The <a class="idlType" href="#idl-def-ConstrainablePattern"><code>ConstrainablePattern</code></a> interface provides this
         exposure.</p>
 
 
@@ -778,7 +784,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 Constrainable interface.</p>
+        application via the <a class="idlType" href="#idl-def-ConstrainablePattern"><code>ConstrainablePattern</code></a> interface.</p>
 
 
         <p>The values of the supported capabilities must be normalized to the
@@ -811,15 +817,15 @@
 
 
         <p>Constraints are exposed on tracks via
-        the Constrainable interface, which includes an API for
+        the <a class="idlType" href="#idl-def-ConstrainablePattern"><code>ConstrainablePattern</code></a> interface, which includes an API for
         dynamically changing constraints.  Note
-        that <a class="internalDFN" href="#dom-navigator-getusermedia">getUserMedia()</a> also permits an initial set of
+        that <a class="internalDFN" href="#dom-mediadevices-getusermedia">getUserMedia()</a> also permits an initial set of
         constraints to be applied when the track is first
         obtained.</p>
 
 
         <p>It is possible for two tracks that share a unique source to
-        apply contradictory constraints. The Constrainable
+        apply contradictory constraints. The <a class="idlType" href="#idl-def-ConstrainablePattern"><code>ConstrainablePattern</code></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
@@ -855,20 +861,20 @@
       <h3 id="h3_introduction" role="heading" aria-level="2"><span class="secno">4.1 </span>Introduction</h3>
 
 
-      <p>The <code><a class="idlType" href="#idl-def-MediaStream"><code>MediaStream</code></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 class="idlType" href="#idl-def-MediaStream"><code>MediaStream</code></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 class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code> and the <code><a class="idlType" href="#idl-def-MediaStream"><code>MediaStream</code></a></code>
+      interfaces. The <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></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 class="idlType" href="#idl-def-MediaStream"><code>MediaStream</code></a></code> is used group
+      several <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code> objects into one unit that
+      can be rendered in a media element or recorded.</p>
 
 
-      <p>Each <code><a class="idlType" href="#idl-def-MediaStream"><code>MediaStream</code></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 class="idlType" href="#idl-def-MediaStream"><code>MediaStream</code></a></code> can contain zero or more <code>
+      <a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code> objects. All tracks in a <code>
+      <a class="idlType" href="#idl-def-MediaStream"><code>MediaStream</code></a></code> are intended to be synchronized when
+      rendered. Different <code><a class="idlType" href="#idl-def-MediaStream"><code>MediaStream</code></a></code> objects do not need
+      to be synchronized.</p>
 
 
       <div class="note"><div id="h_note_1" role="heading" aria-level="3" class="note-title"><span>Note</span></div><p class="">While the intent is to synchronize tracks, it could be
@@ -880,43 +886,24 @@
       playback and the effect that these have on user perception.</p></div>
 
 
-      <p>Each track in a MediaStream object has a corresponding
-      <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code> object.</p>
-
-
       <p>A <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></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 class="idlType" href="#idl-def-MediaStream"><code>MediaStream</code></a></code> object has an input and an output.
-      The input depends on how the object was created: a
-      <code><a class="idlType" href="#idl-def-MediaStream"><code>MediaStream</code></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 class="idlType" href="#idl-def-MediaStream"><code>MediaStream</code></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 class="idlType" href="#idl-def-MediaStream"><code>MediaStream</code></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 class="idlType" href="#idl-def-MediaStream"><code>MediaStream</code></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 class="idlType" href="#idl-def-MediaStream"><code>MediaStream</code></a></code> can be <dfn id="dfn-finished"><a class="internalDFN" href="#dfn-finished">finished</a></dfn>,
-      indicating that its inputs have forever stopped providing data.</p>
-
-
-      <p>The output of a <code><a class="idlType" href="#idl-def-MediaStream"><code>MediaStream</code></a></code> object <em title="MUST" class="rfc2119">MUST</em> correspond
-      to the tracks in its input. Muted audio tracks <em title="MUST" class="rfc2119">MUST</em> be replaced with
-      silence. Muted video tracks <em title="MUST" class="rfc2119">MUST</em> be replaced with blackness.</p>
-
-
       <p>A new <code><a class="idlType" href="#idl-def-MediaStream"><code>MediaStream</code></a></code> object can be created from
       accessible media sources (that does not require any additional
       permissions) using the <code><a href="#dom-mediastream">MediaStream()</a></code> constructor. The constructor
@@ -927,10 +914,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 class="idlType" href="#idl-def-MediaStream"><code>MediaStream</code></a></code> and
       <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code> objects can be cloned. This allows
       for greater control since the separate instances can be manipulated and
@@ -1030,13 +1013,6 @@
       </ol>
 
 
-      <p>A <code><a class="idlType" href="#idl-def-MediaStream"><code>MediaStream</code></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 class="idlType" href="#idl-def-MediaStream"><code>MediaStream</code></a></code> thus has zero
-      or more tracks.</p>
-
-
       <p>The tracks of a <code><a class="idlType" href="#idl-def-MediaStream"><code>MediaStream</code></a></code> are stored in a
       <dfn id="track-set">track set</dfn>. The track set <em title="MUST" class="rfc2119">MUST</em> contain the
       <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code> objects that correspond to the
@@ -1087,6 +1063,7 @@
 <span class="idlAttribute">    readonly    attribute <span class="idlAttrType">DOMString</span>    <span class="idlAttrName"><a href="#widl-MediaStream-id">id</a></span>;</span>
 <span class="idlMethod">    <span class="idlMethType">sequence&lt;<a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a>&gt;</span> <span class="idlMethName"><a href="#widl-MediaStream-getAudioTracks-sequence-MediaStreamTrack">getAudioTracks</a></span> ();</span>
 <span class="idlMethod">    <span class="idlMethType">sequence&lt;<a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a>&gt;</span> <span class="idlMethName"><a href="#widl-MediaStream-getVideoTracks-sequence-MediaStreamTrack">getVideoTracks</a></span> ();</span>
+<span class="idlMethod">    <span class="idlMethType">sequence&lt;<a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a>&gt;</span> <span class="idlMethName"><a href="#widl-MediaStream-getTracks-sequence-MediaStreamTrack">getTracks</a></span> ();</span>
 <span class="idlMethod">    <span class="idlMethType"><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a>?</span>          <span class="idlMethName"><a href="#widl-MediaStream-getTrackById-MediaStreamTrack-DOMString-trackId">getTrackById</a></span> (<span class="idlParam"><span class="idlParamType">DOMString</span> <span class="idlParamName">trackId</span></span>);</span>
 <span class="idlMethod">    <span class="idlMethType">void</span>                       <span class="idlMethName"><a href="#widl-MediaStream-addTrack-void-MediaStreamTrack-track">addTrack</a></span> (<span class="idlParam"><span class="idlParamType"><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></span> <span class="idlParamName">track</span></span>);</span>
 <span class="idlMethod">    <span class="idlMethType">void</span>                       <span class="idlMethName"><a href="#widl-MediaStream-removeTrack-void-MediaStreamTrack-track">removeTrack</a></span> (<span class="idlParam"><span class="idlParamType"><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></span> <span class="idlParamName">track</span></span>);</span>
@@ -1220,7 +1197,19 @@
           <code><a href="#dom-mediastreamtrack-id">id</a></code> is equal to
           <var>trackId</var>. The method <em title="MUST" class="rfc2119">MUST</em> return null if no track matches
           the <var>trackId</var> argument.</p>
-        <table class="parameters"><tbody><tr><th>Parameter</th><th>Type</th><th>Nullable</th><th>Optional</th><th>Description</th></tr><tr><td class="prmName">trackId</td><td class="prmType"><code>DOMString</code></td><td class="prmNullFalse"><span role="img" aria-label="False">✘</span></td><td class="prmOptFalse"><span role="img" aria-label="False">✘</span></td><td class="prmDesc"></td></tr></tbody></table><div><em>Return type: </em><code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code>, nullable</div></dd><dt id="widl-MediaStream-getVideoTracks-sequence-MediaStreamTrack"><code>getVideoTracks</code></dt><dd>
+        <table class="parameters"><tbody><tr><th>Parameter</th><th>Type</th><th>Nullable</th><th>Optional</th><th>Description</th></tr><tr><td class="prmName">trackId</td><td class="prmType"><code>DOMString</code></td><td class="prmNullFalse"><span role="img" aria-label="False">✘</span></td><td class="prmOptFalse"><span role="img" aria-label="False">✘</span></td><td class="prmDesc"></td></tr></tbody></table><div><em>Return type: </em><code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code>, nullable</div></dd><dt id="widl-MediaStream-getTracks-sequence-MediaStreamTrack"><code>getTracks</code></dt><dd>
+          <p>Returns a sequence of <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code> objects
+          representing all the tracks in this stream.</p>
+
+
+          <p>The <dfn id="dom-mediastream-gettracks"><code>getTracks()</code></dfn>
+          method <em title="MUST" class="rfc2119">MUST</em> return a sequence that represents a snapshot of all the
+          <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></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>
+        <div><em>No parameters.</em></div><div><em>Return type: </em><code>sequence&lt;<a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a>&gt;</code></div></dd><dt id="widl-MediaStream-getVideoTracks-sequence-MediaStreamTrack"><code>getVideoTracks</code></dt><dd>
           <p>Returns a sequence of <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code> objects
           representing the video tracks in this stream.</p>
 
@@ -1252,10 +1241,18 @@
       source in the user agent. Several <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></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 class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></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.
       When all tracks using a source have been stopped, the given permission
@@ -1271,81 +1268,53 @@
       <section id="life-cycle-and-media-flow">
         <h4 id="h4_life-cycle-and-media-flow" role="heading" aria-level="3"><span class="secno">4.3.1 </span>Life-cycle and Media Flow</h4>
 
-
+        <h4 id="life-cycle">Life-cycle</h4>
         <p>A <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></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>
+
+        <div class="note"><div id="h_note_3" role="heading" aria-level="4" class="note-title"><span>Note</span></div><p class="">This document describres no way to create a
+        <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code> that is _not_ connected to
+        a source. <code>new</code> allows for future extensions. </p></div>
 
         <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 class="idlType" href="#idl-def-MediaStream"><code>MediaStream</code></a></code> <a class="internalDFN" href="#dfn-consumer">consumer</a>.</p>
-
-
-        <p>A muted or disabled <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></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 class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code>
-        (contained within a <code><a class="idlType" href="#idl-def-MediaStream"><code>MediaStream</code></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 class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code> object is both unmuted and
-        enabled.</p>
-
-
-        <p>A <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></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 class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></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 class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></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 class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code> is <a href="#track-muted">muted</a> or <a href="#track-enabled">enabled</a>, see
+        below).</p>
 
         <p>A <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code> object is said to
         <em>end</em> when the source of the track is disconnected or
         exhausted.</p>
 
 
+        <p>A <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></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 class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code> is using the same source, the
+        source will be <a href="#source-stopped">stopped</a>. <code>
+        <a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code> attributes such as <code><a href="#dom-mediastreamtrack-kind">kind</a></code> and <code><a href="#dom-mediastreamtrack-label">label</a></code> <em title="MUST" class="rfc2119">MUST</em> not change values
+        when the source is detached.</p>
+
+
         <p>When a <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></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>
-        ends for any reason other than the <code><a href="#dom-mediastreamtrack-stop">stop()</a></code> method being invoked on
-        the <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code> object that represents
-        <var>track</var>, the user agent <em title="MUST" class="rfc2119">MUST</em> queue a task that runs the
-        following steps:</p>
+        be looped, or because the application invoked the <code><a href="#dom-mediastreamtrack-stop">stop()</a></code> method on
+        the <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></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 class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code> <var>track</var>
+        ends for any reason other than the <code><a href="#dom-mediastreamtrack-stop">stop()</a></code> method being invoked,
+        the user agent <em title="MUST" class="rfc2119">MUST</em> queue a task that runs the following steps:</p>
 
 
         <ol>
           <li>
-            <p>If the track's <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>
+            <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.</p>
           </li>
 
 
@@ -1355,11 +1324,8 @@
           </li>
 
           <li>
-            <p>Detach <var>track's</var> source.</p>
-
-
-            <p>If no other <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></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>
@@ -1371,6 +1337,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 id="media-flow">Media Flow</h4>
+
+        <p>There are two concepts related to the media flow for a
+        <code>live</code> <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></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 class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code>.
+        If live samples are not made available to the <code>
+        <a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></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 class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></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>

[1479 lines skipped]

Received on Friday, 20 June 2014 02:36:34 UTC