- 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