- From: CVS User dburnett <cvsmail@w3.org>
- Date: Fri, 20 Jun 2014 02:36:31 +0000
- To: public-dap-commits@w3.org
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<<a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a>></span> <span class="idlMethName"><a href="#widl-MediaStream-getAudioTracks-sequence-MediaStreamTrack">getAudioTracks</a></span> ();</span>
<span class="idlMethod"> <span class="idlMethType">sequence<<a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a>></span> <span class="idlMethName"><a href="#widl-MediaStream-getVideoTracks-sequence-MediaStreamTrack">getVideoTracks</a></span> ();</span>
+<span class="idlMethod"> <span class="idlMethType">sequence<<a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a>></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<<a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a>></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