- From: CVS User dburnett <cvsmail@w3.org>
- Date: Thu, 26 Dec 2013 03:19:20 +0000
- To: public-dap-commits@w3.org
Update of /sources/public/2011/webrtc/editor
In directory roscoe:/tmp/cvs-serv14100
Modified Files:
getusermedia.html
Log Message:
Added 20131225 archived version.
--- /sources/public/2011/webrtc/editor/getusermedia.html 2013/11/05 18:10:44 1.25
+++ /sources/public/2011/webrtc/editor/getusermedia.html 2013/12/26 03:19:20 1.26
@@ -466,11 +466,11 @@
</p>
<h1 class="title p-name" id="title" property="dcterms:title">Media Capture and Streams</h1>
- <h2 id="w3c-editor-s-draft-05-november-2013" property="dcterms:issued" datatype="xsd:dateTime" content="2013-11-05T16:09:50.000Z"><acronym title="World Wide Web Consortium">W3C</acronym> Editor's Draft <time class="dt-published" datetime="2013-11-05">05 November 2013</time></h2>
+ <h2 id="w3c-editor-s-draft-25-december-2013" property="dcterms:issued" datatype="xsd:dateTime" content="2013-12-26T01:13:15.000Z"><acronym title="World Wide Web Consortium">W3C</acronym> Editor's Draft <time class="dt-published" datetime="2013-12-25">25 December 2013</time></h2>
<dl>
<dt>This version:</dt>
- <dd><a class="u-url" href="http://dev.w3.org/2011/webrtc/editor/archives/20131105/getusermedia.html">http://dev.w3.org/2011/webrtc/editor/archives/20131105/getusermedia.html</a></dd>
+ <dd><a class="u-url" href="http://dev.w3.org/2011/webrtc/editor/archives/20131225/getusermedia.html">http://dev.w3.org/2011/webrtc/editor/archives/20131225/getusermedia.html</a></dd>
<dt>Latest published version:</dt>
<dd><a href="http://www.w3.org/TR/mediacapture-streams/">http://www.w3.org/TR/mediacapture-streams/</a></dd>
@@ -483,7 +483,7 @@
<dt>Previous editor's draft:</dt>
- <dd><a href="http://dev.w3.org/2011/webrtc/editor/archives/20131017/getusermedia.html">http://dev.w3.org/2011/webrtc/editor/archives/20131017/getusermedia.html</a></dd>
+ <dd><a href="http://dev.w3.org/2011/webrtc/editor/archives/20131105/getusermedia.html">http://dev.w3.org/2011/webrtc/editor/archives/20131105/getusermedia.html</a></dd>
@@ -579,7 +579,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="#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-types"><span class="scno">4.3.4 </span>Track Source Types</a></li><li class="tocline"><a class="tocxref" href="#isolated-media-streams"><span class="secno">4.3.5 </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><li class="tocline"><a class="tocxref" href="#video-and-audio-tracks"><span class="secno">4.5 </span>Video and Audio Tracks</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#videostreamtrack-interface"><span class="scno">4.5.1 </span>VideoStreamTrack interface</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#constructors-2"><span class="secno">4.5.1.1 </span>Constructors</a></li></ul></li><li class="tocline"><a class="tocxref" href="#audiostreamtrack"><span class="secno">4.5.2 </span>AudioStreamTrack</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#constructors-3"><span class="secno">4.5.2.1 </span>Constructors</a></li></ul></li></ul></li></ul></li><li class="tocline"><a class="tocxref" href="#the-model-sources-sinks-constraints-and-states"><span class="secno">5. </span>The model: sources, sinks, constraints, and states</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="#event-summary"><span class="secno">7. </span>Event summary</a></li><li class="tocline"><a class="tocxref" href="#enumerating-devices"><span class="secno">8. </span>Enumerating Local Media Devices</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#navigatorusermedia"><span class="secno">8.1 </span>NavigatorUserMedia</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#methods-2"><span class="secno">8.1.1 </span>Methods</a></li></ul></li><li class="tocline"><a class="tocxrf" href="#device-info"><span class="secno">8.2 </span>Device Info</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#callback-mediadeviceinfocallback-parameters"><span class="secno">8.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">8.2.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">9. </span>Obtaining local multimedia content</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#navigatorusermedia-1"><span class="secno">9.1 </span>NavigatorUserMedia</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#methods-3"><span class="secno">9.1.1 </span>Methods</a></li></ul></li><li class="tocline"><a class="tocxref" href="#mediastreamconstraints"><span class="secno">9.2 <span>MediaStreamConstraints</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#dictionary-mediastreamconstraints-members"><span class="secno">9.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">9.3 </span>NavigatorUserMediaSuccessCallback</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#callback-navigatorusermediasuccesscallback-parameters"><span class="secno">9.3.1 </span>Callback <span class="formerLink"><code>NavigatorUserMediaSuccessCallback</code></span> Parameters</a></li></ul></li><li class="tocline"><a class="tocxref" href="#navigatorusermediaerror-and-navigatorusermediaerrorcallback"><span class="secno">9.4 </span>NavigatorUserMediaError and NavigatorUserMediaErrorCallback</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#attributes-4"><span class="secno">9.4.1 </span>Attributes</a></li><liclass="tocline"><a class="tocxref" href="#callback-navigatorusermediaerrorcallback-parameters"><span class="secno">9.4.2 </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">9.5 </span>Implementation Suggestions</a></li></ul></li><li class="tocline"><a class="tocxref" href="#constrainable-interface"><span class="secno">10. </span>Constrainable Interface</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#interface-definition-1"><span class="secno">10.1 </span>Interface Definition</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#attributes-5"><span class="secno">10.1.1 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#methods-4"><span class="secno">10.1.2 </span>Methods</a></li><li class="tocline"><a class="tocxref" href="#applyconstraints-failure-callback"><span class="secno">10.1.3 </span>applyCostraints Failure Callback</a><ul class="toc"></ul></li><li class="tocline"><a class="tocxref" href="#capabilities-constraints-and-settings"><span class="secno">10.1.4 </span>Capabilities, Constraints, and Settings</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#registry"><span class="secno">10.1.4.1 </span>The Property Registry</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#propertyvaluerange"><span class="secno">10.1.4.1.1 </span>PropertyValueRange</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#dictionary-propertyvaluerange-members"><span class="secno">10.1.4.1.1.1 </span>Dictionary <span class="formerLink"><code>PropertyValueRange</code></span> Members</a></li></ul></li></ul></li><li class="tocline"><a class="tocxref" href="#capabilities"><span class="secno">10.1.4.2 </span>Capabilities</a></li><li class="tocline"><a class="tocxref" href="#settings"><span class="secno">10.1.4.3 </span>Settings</a></li><li class="tocline"><a class="tocxref" href="#constrints"><span class="secno">10.1.4.4 </span>Constraints</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#dictionary-constraints-members"><span class="secno">10.1.4.4.1 </span>Dictionary <span class="formerLink"><code>Constraints</code></span> Members</a></li><li class="tocline"><a class="tocxref" href="#constraintset"><span class="secno">10.1.4.4.2 </span>ConstraintSet</a></li><li class="tocline"><a class="tocxref" href="#constraint"><span class="secno">10.1.4.4.3 </span>Constraint</a></li></ul></li></ul></li></ul></li></ul></li><li class="tocline"><a class="tocxref" href="#examples"><span class="secno">11. </span>Examples</a></li><li class="tocline"><a class="tocxref" href="#iana-registrations"><span class="secno">12. </span>IANA Registrations</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#track-property-registrations"><span class="secno">12.1 </span>Track Property Registrations</a></li></ul></li><li class="tocline"><a class="tocxref" href="#change-log"><span class="secno">1. </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="#references"><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></ul></li></ul></section>
+</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="#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-types"><span class="scno">4.3.4 </span>Track Source Types</a></li><li class="tocline"><a class="tocxref" href="#isolated-media-streams"><span class="secno">4.3.5 </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><li class="tocline"><a class="tocxref" href="#video-and-audio-tracks"><span class="secno">4.5 </span>Video and Audio Tracks</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#videostreamtrack-interface"><span class="scno">4.5.1 </span>VideoStreamTrack interface</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#constructors-2"><span class="secno">4.5.1.1 </span>Constructors</a></li></ul></li><li class="tocline"><a class="tocxref" href="#audiostreamtrack"><span class="secno">4.5.2 </span>AudioStreamTrack</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#constructors-3"><span class="secno">4.5.2.1 </span>Constructors</a></li></ul></li></ul></li></ul></li><li class="tocline"><a class="tocxref" href="#the-model-sources-sinks-constraints-and-states"><span class="secno">5. </span>The model: sources, sinks, constraints, and states</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-4"><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-mediaerroreventinit-members"><pan class="secno">7.4 </span>Dictionary <span class="formerLink"><code>MediaErrorEventInit</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.2.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-1"><span class="secno">10.1 </span>NavigatorUserMedia</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="#navigatorusermediauccesscallback"><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>Constrinable Interface</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#interface-definition-1"><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><li class="tocline"><a class="tocxref" href="#capabilities-constraints-and-settings"><span class="secno">11.1.4 </span>Capabilities, Constraints, and Settings</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#registry"><span class="secno">11.1.4.1 </span>The Property Registry</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#propertyvaluerange"><span class="secno">11.1.4.1.1 </span>PropertyValueRange</a><ul class"toc"><li class="tocline"><a class="tocxref" href="#dictionary-propertyvaluerange-members"><span class="secno">11.1.4.1.1.1 </span>Dictionary <span class="formerLink"><code>PropertyValueRange</code></span> Members</a></li></ul></li></ul></li><li class="tocline"><a class="tocxref" href="#capabilities"><span class="secno">11.1.4.2 </span>Capabilities</a></li><li class="tocline"><a class="tocxref" href="#settings"><span class="secno">11.1.4.3 </span>Settings</a></li><li class="tocline"><a class="tocxref" href="#constraints"><span class="secno">11.1.4.4 </span>Constraints</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#dictionary-constraints-members"><span class="secno">11.1.4.4.1 </span>Dictionary <span class="formerLink"><code>Constraints</code></span> Members</a></li><li class="tocline"><a class="tocxref" href="#constraintset"><span class="secno">11.1.4.4.2 </span>ConstraintSet</a></li><li class="tocline"><a class="tocxref" href="#constraint"><span class="secno">11.1.4.4.3 </span>Constraint<a></li></ul></li></ul></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="#references"><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></l></ul></li></ul></section>
@@ -929,8 +929,8 @@
<li>
<p>If <var>stream</var>'s <a href="#track-set">track set</a> is
- empty, set <var>stream</var>'s <code><a href="#dom-mediastream-inactive">inactive</a></code> attribute to
- <code>true</code>, otherwise set it to <code>false</code>.</p>
+ empty, set <var>stream</var>'s <code><a href="#dom-mediastream-active">active</a></code> attribute to
+ <code>false</code>, otherwise set it to <code>true</code>.</p>
</li>
<li>
@@ -973,11 +973,11 @@
<p>When a <code><a class="idlType" href="#idl-def-MediaStream"><code>MediaStream</code></a></code> goes from being active to
inactive, the user agent <em title="MUST" class="rfc2119">MUST</em> queue a task that sets the object's
- <code><a href="#dom-mediastream-inactive">inactive</a></code> attribute
- to <code>true</code> and fire a simple event named <code><a href="#event-mediastream-inactive">inactive</a></code> at the object. When a
+ <code><a href="#dom-mediastream-active">active</a></code> attribute
+ to <code>false</code> and fire a simple event named <code><a href="#event-mediastream-inactive">inactive</a></code> at the object. When a
<code><a class="idlType" href="#idl-def-MediaStream"><code>MediaStream</code></a></code> goes from being inactive to active, the
- user agent <em title="MUST" class="rfc2119">MUST</em> queue a task that sets the object's <code><a href="#dom-mediastream-inactive">inactive</a></code> attribute to
- <code>false</code> and fire a simple event named <code><a href="#event-mediastream-active">active</a></code> at the object.</p>
+ user agent <em title="MUST" class="rfc2119">MUST</em> queue a task that sets the object's <code><a href="#dom-mediastream-active">active</a></code> attribute to
+ <code>true</code> and fire a simple event named <code><a href="#event-mediastream-active">active</a></code> at the object.</p>
<p>If the stream's activity status changed due to a user request, the task
source for this <span title="concept-task">task</span> is the user
@@ -994,12 +994,23 @@
<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>
<span class="idlMethod"> <span class="idlMethType"><a class="idlType" href="#idl-def-MediaStream"><code>MediaStream</code></a></span> <span class="idlMethName"><a href="#widl-MediaStream-clone-MediaStream">clone</a></span> ();</span>
-<span class="idlAttribute"> readonly attribute <span class="idlAttrType">boolean</span> <span class="idlAttrName"><a href="#widl-MediaStream-inactive">inactive</a></span>;</span>
+<span class="idlAttribute"> readonly attribute <span class="idlAttrType">boolean</span> <span class="idlAttrName"><a href="#widl-MediaStream-active">active</a></span>;</span>
<span class="idlAttribute"> attribute <span class="idlAttrType">EventHandler</span> <span class="idlAttrName"><a href="#widl-MediaStream-onactive">onactive</a></span>;</span>
<span class="idlAttribute"> attribute <span class="idlAttrType">EventHandler</span> <span class="idlAttrName"><a href="#widl-MediaStream-oninactive">oninactive</a></span>;</span>
<span class="idlAttribute"> attribute <span class="idlAttrType">EventHandler</span> <span class="idlAttrName"><a href="#widl-MediaStream-onaddtrack">onaddtrack</a></span>;</span>
<span class="idlAttribute"> attribute <span class="idlAttrType">EventHandler</span> <span class="idlAttrName"><a href="#widl-MediaStream-onremovetrack">onremovetrack</a></span>;</span>
-};</span></pre><section id="constructors"><h4 id="h4_constructors" role="heading" aria-level="3"><span class="secno">4.2.1 </span>Constructors</h4><dl class="constructors"><dt id="widl-ctor-MediaStream"><code>MediaStream</code></dt><dd>See the <a href="#mediastream-constructor">MediaStream constructor algorithm</a><div><em>No parameters.</em></div></dd><dt id="widl-ctor-MediaStream--MediaStream-stream"><code>MediaStream</code></dt><dd>See the <a href="#mediastream-constructor">MediaStream constructor algorithm</a><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">stream</td><td class="prmType"><code></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></dd><dt id="widl-ctor-MediaStream--sequence-MediaStreamTrack--tracks"><code>MediaStream</code></dt><dd>Se the <a href="#mediastream-constructor">MediaStream constructor algorithm</a><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">tracks</td><td class="prmType"><code></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></dd></dl></section><section id="attributes"><h4 id="h4_attributes" role="heading" aria-level="3"><span class="secno">4.2.2 </span>Attributes</h4><dl class="attributes"><dt id="widl-MediaStream-id"><code>id</code> of type <span class="idlAttrType">DOMString</span>, readonly </dt><dd>
+};</span></pre><section id="constructors"><h4 id="h4_constructors" role="heading" aria-level="3"><span class="secno">4.2.1 </span>Constructors</h4><dl class="constructors"><dt id="widl-ctor-MediaStream"><code>MediaStream</code></dt><dd>See the <a href="#mediastream-constructor">MediaStream constructor algorithm</a><div><em>No parameters.</em></div></dd><dt id="widl-ctor-MediaStream--MediaStream-stream"><code>MediaStream</code></dt><dd>See the <a href="#mediastream-constructor">MediaStream constructor algorithm</a><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">stream</td><td class="prmType"><code><a class="idlType" href="#idl-def-MediaStream"><code>MediaStream</code></a></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></dd><dt id="widl-ctor-MediaSteam--sequence-MediaStreamTrack--tracks"><code>MediaStream</code></dt><dd>See the <a href="#mediastream-constructor">MediaStream constructor algorithm</a><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">tracks</td><td class="prmType"><code>sequence<<a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a>></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></dd></dl></section><section id="attributes"><h4 id="h4_attributes" role="heading" aria-level="3"><span class="secno">4.2.2 </span>Attributes</h4><dl class="attributes"><dt id="widl-MediaStream-active"><code>active</code> of type <span class="idlAttrType">boolean</span>, readonly </dt><dd>
+ <p>The <dfn id="dom-mediastream-active"><code>MediaStream.active</code></dfn>
+ attribute returns true if the <code><a class="idlType" href="#idl-def-MediaStream"><code>MediaStream</code></a></code> is
+ active (see <a href="#stream-inactive">inactive</a>), and false
+ otherwise.</p>
+
+ <p>When a <code><a class="idlType" href="#idl-def-MediaStream"><code>MediaStream</code></a></code> object is created, its
+ <code><a href="#dom-mediastream-active">active</a></code>
+ attribute <em title="MUST" class="rfc2119">MUST</em> be set to true, unless stated otherwise (for example
+ by the <code><a href="#dom-mediastream">MediaStream()</a></code>
+ constructor algorithm).</p>
+ </dd><dt id="widl-MediaStream-id"><code>id</code> of type <span class="idlAttrType">DOMString</span>, readonly </dt><dd>
<p>When a <code><a class="idlType" href="#idl-def-MediaStream"><code>MediaStream</code></a></code> object is created, the
user agent <em title="MUST" class="rfc2119">MUST</em> generate a globally unique identifier string, and
<em title="MUST" class="rfc2119">MUST</em> initialize the object's <code><a href="#dom-mediastream-id">id</a></code> attribute to that string.
@@ -1014,16 +1025,6 @@
<p>The <dfn id="dom-mediastream-id"><code>id</code></dfn>
attribute <em title="MUST" class="rfc2119">MUST</em> return the value to which it was initialized when the
object was created.</p>
- </dd><dt id="widl-MediaStream-inactive"><code>inactive</code> of type <span class="idlAttrType">boolean</span>, readonly </dt><dd>
- <p>The <dfn id="dom-mediastream-inactive"><code>MediaStream.inactive</code></dfn>
- attribute returns true if the <code><a class="idlType" href="#idl-def-MediaStream"><code>MediaStream</code></a></code> is
- <a href="#stream-inactive">inactive</a>, and false otherwise.</p>
-
- <p>When a <code><a class="idlType" href="#idl-def-MediaStream"><code>MediaStream</code></a></code> object is created, its
- <code><a href="#dom-mediastream-inactive">inactive</a></code>
- attribute <em title="MUST" class="rfc2119">MUST</em> be set to false, unless stated otherwise (for example
- by the <code><a href="#dom-mediastream">MediaStream()</a></code>
- constructor algorithm).</p>
</dd><dt id="widl-MediaStream-onactive"><code>onactive</code> of type <span class="idlAttrType">EventHandler</span>, </dt><dd>This event handler, of type <code><a href="#event-mediastream-active">active</a></code>, <em title="MUST" class="rfc2119">MUST</em> be supported by
all objects implementing the <code><a class="idlType" href="#idl-def-MediaStream"><code>MediaStream</code></a></code>
interface.</dd><dt id="widl-MediaStream-onaddtrack"><code>onaddtrack</code> of type <span class="idlAttrType">EventHandler</span>, </dt><dd>This event handler, of type <code><a href="#event-mediastream-addtrack">addtrack</a></code>, <em title="MUST" class="rfc2119">MUST</em> be supported by
@@ -1060,7 +1061,7 @@
<p>Add <var>track</var> to <var>stream</var>'s <a href="#track-set">track set</a>.</p>
</li>
</ol>
- <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">track</td><td class="prmType"><code></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></code></div></dd><dt id="widl-MediaStream-clone-MediaStream"><code>clone</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">track</td><td class="prmType"><code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></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>void</code></div></dd><dt id="widl-MediaStream-clone-MediaStream"><code>clone</code></dt><dd>
<p>Clones the given <code><a class="idlType" href="#idl-def-MediaStream"><code>MediaStream</code></a></code> and all its
tracks.</p>
@@ -1090,7 +1091,7 @@
<a href="#track-set">track set</a>.</p>
</li>
</ol>
- <div><em>No parameters.</em></div><div><em>Return type: </em><code></code></div></dd><dt id="widl-MediaStream-getAudioTracks-sequence-MediaStreamTrack"><code>getAudioTracks</code></dt><dd>
+ <div><em>No parameters.</em></div><div><em>Return type: </em><code><a class="idlType" href="#idl-def-MediaStream"><code>MediaStream</code></a></code></div></dd><dt id="widl-MediaStream-getAudioTracks-sequence-MediaStreamTrack"><code>getAudioTracks</code></dt><dd>
<p>Returns a sequence of <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code> objects
representing the audio tracks in this stream.</p>
@@ -1101,14 +1102,14 @@
<a href="#dom-mediastreamtrack-kind">kind</a></code> is equal to
"<code>audio</code>". 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></code></div></dd><dt id="widl-MediaStream-getTrackById-MediaStreamTrack-DOMString-trackId"><code>getTrackById</code></dt><dd>
+ <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-getTrackById-MediaStreamTrack-DOMString-trackId"><code>getTrackById</code></dt><dd>
<p>The <dfn id="dom-mediastream-gettrackbyid"><code>getTrackById()</code></dfn>
method <em title="MUST" class="rfc2119">MUST</em> return the first <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code>
object in this stream's <a href="#track-set">track set</a> whose
<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></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></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-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>
@@ -1119,7 +1120,7 @@
<a href="#dom-mediastreamtrack-kind">kind</a></code> is equal to
"<code>video</code>". 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></code></div></dd><dt id="widl-MediaStream-removeTrack-void-MediaStreamTrack-track"><code>removeTrack</code></dt><dd>
+ <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-removeTrack-void-MediaStreamTrack-track"><code>removeTrack</code></dt><dd>
<p>Removes the given <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code> from this
<code><a class="idlType" href="#idl-def-MediaStream"><code>MediaStream</code></a></code>.</p>
@@ -1143,7 +1144,7 @@
<a href="#track-set">track set</a>, remove it.</p>
</li>
</ol>
- <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">track</td><td class="prmType"><code></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></code></div></dd></dl></section>
+ <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">track</td><td class="prmType"><code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></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>void</code></div></dd></dl></section>
</section>
<section id="mediastreamtrack">
@@ -1156,8 +1157,16 @@
<code><a href="#dom-navigator-getusermedia">getUserMedia()</a></code>
.</p>
- <p>Note that a web application can revoke all given permissions
- with <code><a href="#dom-mediastreamtrack-stop">MediaStreamTrack.stop()</a></code>.</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
+ for that source is revoked and the source is <dfn id="source-stopped">stopped</dfn>. If the data is being generated from a
+ live source (e.g., a microphone or camera), then the user agent <em title="SHOULD" class="rfc2119">SHOULD</em>
+ remove any active "on-air" indicator for that source. If the data is being
+ generated from a prerecorded source (e.g. a video file), any remaining
+ content in the file is ignored. An implementation may use a per source
+ reference count to keep track of source usage, but the specifics are out
+ of scope for this specification.</p>
<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>
@@ -1215,9 +1224,8 @@
(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, or because
- the reference count of the track's underlying media source has reached
- zero), it is said to be <dfn id="track-ended">ended</dfn>. When track instance
+ because the UA has instructed the track to end for any reason, it is
+ said to be <dfn id="track-ended">ended</dfn>. 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
@@ -1399,7 +1407,7 @@
<p>Return <var>trackClone</var>.</p>
</li>
</ol>
- <div><em>No parameters.</em></div><div><em>Return type: </em><code></code></div></dd><dt id="widl-MediaStreamTrack-stop-void"><code>stop</code></dt><dd>
+ <div><em>No parameters.</em></div><div><em>Return type: </em><code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code></div></dd><dt id="widl-MediaStreamTrack-stop-void"><code>stop</code></dt><dd>
<p>When a <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code>
object's <dfn id="dom-mediastreamtrack-stop"><code>stop()</code></dfn> method
is invoked, the user agent <em title="MUST" class="rfc2119">MUST</em> run following steps:</p>
@@ -1423,24 +1431,17 @@
</li>
<li>
- <p>Permanently stop the generation of data for <var>track</var>'s
- source. If the data is being generated from a live source (e.g.,
- a microphone or camera), then the user agent <em title="SHOULD" class="rfc2119">SHOULD</em> remove any
- active "on-air" indicator for that source. If the data is being
- generated from a prerecorded source (e.g. a video file), any
- remaining content in the file is ignored.</p>
-
- <div class="note"><div id="h_note_4" role="heading" aria-level="5" class="note-title"><span>Note</span></div><p class="">This will effectively
- <a href="#track-ended">end</a> all other
- <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code> objects sharing the same
- source as <var>track</var>.</p></div>
+ <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>
</li>
</ol>
<p>The task source for the <span title="concept-task">tasks</span>
queued for the <code><a href="#dom-mediastreamtrack-stop">stop()</a></code> method is the DOM
manipulation task source.</p>
- <div><em>No parameters.</em></div><div><em>Return type: </em><code></code></div></dd></dl></section>
+ <div><em>No parameters.</em></div><div><em>Return type: </em><code>void</code></div></dd></dl></section>
@@ -1515,7 +1516,7 @@
may be added to any PeerConnection.
</p>
- <div class="note"><div id="h_note_5" role="heading" aria-level="4" class="note-title"><span>Note</span></div><p class=""> Open Issue: The editors worry that the above paragraph
+ <div class="note"><div id="h_note_4" role="heading" aria-level="4" class="note-title"><span>Note</span></div><p class=""> Open Issue: The editors worry that the above paragraph
is just wrong. If the track can be added to a PeerConnection that
is connect to another PeerConenction in the same application, the
application could get access to the data. We sugest this should be changed
@@ -1558,7 +1559,7 @@
};</span><br><br>[<span class="idlCtor"> <span class="idlCtorKeyword"></span><span class="idlCtorName"><a href="#widl-ctor-MediaStreamTrackEvent--DOMString-type-MediaStreamTrackEventInit-eventInitDict">Constructor</a></span> (<span class="idlParam"><span class="idlParamType">DOMString</span> <span class="idlParamName">type</span></span>, <span class="idlParam"><span class="idlParamType"><a class="idlType" href="#idl-def-MediaStreamTrackEventInit"><code>MediaStreamTrackEventInit</code></a></span> <span class="idlParamName">eventInitDict</span></span>)</span>]
interface <span class="idlInterfaceID">MediaStreamTrackEvent</span> : <span class="idlSuperclass">Event</span> {
<span class="idlAttribute"> readonly attribute <span class="idlAttrType"><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></span> <span class="idlAttrName"><a href="#widl-MediaStreamTrackEvent-track">track</a></span>;</span>
-};</span></pre><section id="constructors-1"><h4 id="h4_constructors-1" role="heading" aria-level="3"><span class="secno">4.4.1 </span>Constructors</h4><dl class="constructors"><dt id="widl-ctor-MediaStreamTrackEvent--DOMString-type-MediaStreamTrackEventInit-eventInitDict"><code>MediaStreamTrackEvent</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">type</td><td class="prmType"><code></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><tr><td class="prmName">eventInitDict</td><td class="prmType"><code></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></dd></dl></section><section id="attributes-2"><h id="h4_attributes-2" role="heading" aria-level="3"><span class="secno">4.4.2 </span>Attributes</h4><dl class="attributes"><dt id="widl-MediaStreamTrackEvent-track"><code>track</code> of type <span class="idlAttrType"><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></span>, readonly </dt><dd>
+};</span></pre><section id="constructors-1"><h4 id="h4_constructors-1" role="heading" aria-level="3"><span class="secno">4.4.1 </span>Constructors</h4><dl class="constructors"><dt id="widl-ctor-MediaStreamTrackEvent--DOMString-type-MediaStreamTrackEventInit-eventInitDict"><code>MediaStreamTrackEvent</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">type</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><tr><td class="prmName">eventInitDict</td><td class="prmType"><code><a class="idlType" href="#idl-def-MediaStreamTrackEventInit"><code>MediaStreamTrackEventInit</code></a></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></dd></dl></section><section id="attributes-2"><h4 id="h4_attributes-2" role="heading" aria-level="3"><span class="secno">4.4.2 </span>Attributes</h4><dl class="attributes"><dt id="widl-MediaStreamTrackEvent-track"><code>track</code> of type <span class="idlAttrType"><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></span>, readonly </dt><dd>
<p>The <dfn id="dom-mediastreamtrackevent-track"><code>track</code></dfn> attribute
represents the <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code> object associated
with the event.</p>
@@ -1594,7 +1595,7 @@
track as needed by the application, or created after-the-fact
if the initial constraints are unknown to the application.</p>
- <div class="note"><div id="h_note_6" role="heading" aria-level="4" class="note-title"><span>Note</span></div><div class="">
+ <div class="note"><div id="h_note_5" role="heading" aria-level="4" class="note-title"><span>Note</span></div><div class="">
<p><strong>Example: </strong> <code><a class="idlType" href="#idl-def-VideoStreamTrack"><code>VideoStreamTrack</code></a></code>
objects are instantiated in JavaScript using the new
operator:</p>
@@ -1605,13 +1606,13 @@
<pre class="idl"><span class="idlInterface" id="idl-def-VideoStreamTrack">[<span class="idlCtor"> <span class="idlCtorKeyword"></span><span class="idlCtorName"><a href="#widl-ctor-VideoStreamTrack--Constraints-videoConstraints">Constructor</a></span> (<span class="idlParam">optional <span class="idlParamType"><a class="idlType" href="#idl-def-Constraints"><code>Constraints</code></a></span> <span class="idlParamName">videoConstraints</span></span>)</span>]
interface <span class="idlInterfaceID">VideoStreamTrack</span> : <span class="idlSuperclass"><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></span> {
-};</span></pre><section id="constructors-2"><h5 id="h5_constructors-2" role="heading" aria-level="4"><span class="secno">4.5.1.1 </span>Constructors</h5><dl class="constructors"><dt id="widl-ctor-VideoStreamTrack--Constraints-videoConstraints"><code>VideoStreamTrack</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">videoConstraints</td><td class="prmType"><code></code></td><td class="prmNullFalse"><span role="img" aria-label="False">✘</span></td><td class="prmOptTrue"><span role="img" aria-label="True">✔</span></td><td class="prmDesc"></td></tr></tbody></table></dd></dl></section>
+};</span></pre><section id="constructors-2"><h5 id="h5_constructors-2" role="heading" aria-level="4"><span class="secno">4.5.1.1 </span>Constructors</h5><dl class="constructors"><dt id="widl-ctor-VideoStreamTrack--Constraints-videoConstraints"><code>VideoStreamTrack</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">videoConstraints</td><td class="prmType"><code><a class="idlType" href="#idl-def-Constraints"><code>Constraints</code></a></code></td><td class="prmNullFalse"><span role="img" aria-label="False">✘</span></td><td class="prmOptTrue"><span role="img" aria-label="True">✔</span></td><td class="prmDesc"></td></tr></tbody></table></dd></dl></section>
</section>
<section id="audiostreamtrack">
<h4 id="h4_audiostreamtrack" role="heading" aria-level="3"><span class="secno">4.5.2 </span>AudioStreamTrack</h4>
- <div class="note"><div id="h_note_7" role="heading" aria-level="4" class="note-title"><span>Note</span></div><div class="">
+ <div class="note"><div id="h_note_6" role="heading" aria-level="4" class="note-title"><span>Note</span></div><div class="">
<p><strong>Example: </strong><code><a class="idlType" href="#idl-def-AudioStreamTrack"><code>AudioStreamTrack</code></a></code> objects are instantiated in JavaScript using the new operator:</p>
<pre><b>new</b> <code>AudioStreamTrack</code>();</pre>
or
@@ -1620,7 +1621,7 @@
<pre class="idl"><span class="idlInterface" id="idl-def-AudioStreamTrack">[<span class="idlCtor"> <span class="idlCtorKeyword"></span><span class="idlCtorName"><a href="#widl-ctor-AudioStreamTrack--Constraints-audioConstraints">Constructor</a></span> (<span class="idlParam">optional <span class="idlParamType"><a class="idlType" href="#idl-def-Constraints"><code>Constraints</code></a></span> <span class="idlParamName">audioConstraints</span></span>)</span>]
interface <span class="idlInterfaceID">AudioStreamTrack</span> : <span class="idlSuperclass"><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></span> {
-};</span></pre><section id="constructors-3"><h5 id="h5_constructors-3" role="heading" aria-level="4"><span class="secno">4.5.2.1 </span>Constructors</h5><dl class="constructors"><dt id="widl-ctor-AudioStreamTrack--Constraints-audioConstraints"><code>AudioStreamTrack</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">audioConstraints</td><td class="prmType"><code></code></td><td class="prmNullFalse"><span role="img" aria-label="False">✘</span></td><td class="prmOptTrue"><span role="img" aria-label="True">✔</span></td><td class="prmDesc"></td></tr></tbody></table></dd></dl></section>
+};</span></pre><section id="constructors-3"><h5 id="h5_constructors-3" role="heading" aria-level="4"><span class="secno">4.5.2.1 </span>Constructors</h5><dl class="constructors"><dt id="widl-ctor-AudioStreamTrack--Constraints-audioConstraints"><code>AudioStreamTrack</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">audioConstraints</td><td class="prmType"><code><a class="idlType" href="#idl-def-Constraints"><code>Constraints</code></a></code></td><td class="prmNullFalse"><span role="img" aria-label="False">✘</span></td><td class="prmOptTrue"><span role="img" aria-label="True">✔</span></td><td class="prmDesc"></td></tr></tbody></table></dd></dl></section>
</section>
</section>
</section>
@@ -1650,7 +1651,7 @@
feed back information along the media pipeline and have the
source produce content more suitable for display.</p>
- <div class="note"><div id="h_note_8" role="heading" aria-level="2" class="note-title"><span>Note</span></div><div class="">
+ <div class="note"><div id="h_note_7" role="heading" aria-level="2" class="note-title"><span>Note</span></div><div class="">
<p><strong>Note: </strong> This sort of feedback loop is
obviously just enabling an "optimization", but it's a
non-trivial gain. This optimization can save battery, allow
@@ -1790,7 +1791,7 @@
<p>It is possible that <a class="internalDFN" href="#dfn-constraints">constraints</a> can be applied to a track
which a source is unable to satisfy. When this happens, the user
- agent is required to fire an <a class="internalDFN" href="#event-mediastreamtrack-overconstrained">overconstrained</a> event to the
+ agent is required to fire an <a class="internalDFN" href="#event-mediastreamtrack-overconstrained">overconstrained</a> MediaErrorEvent to the
track informing it of this condition, and the track becomes
muted. There is no mandatory side-effect on the source itself as
a result of this condition.</p>
@@ -1801,7 +1802,7 @@
there is only a single thread of control, it is always possible
for the browser to determine which track created the
overconstrained condition. In this situation, the user agent
- <em title="MUST" class="rfc2119">MUST</em> send the <a class="internalDFN" href="#event-mediastreamtrack-overconstrained">overconstrained</a> event only to the track that
+ <em title="MUST" class="rfc2119">MUST</em> send the <a class="internalDFN" href="#event-mediastreamtrack-overconstrained">overconstrained</a> MediaErrorEvent only to the track that
created the condition and <em title="MUST" class="rfc2119">MUST</em> not apply any of the constraints
newly requested for that track. Here is an example of this
behavior.</p>
@@ -2235,9 +2236,53 @@
</table>
</section>
</section>
+<section id="error-handling">
+ <!--OddPage--><h2 id="h2_error-handling" role="heading" aria-level="1"><span class="secno">7. </span>Error Handling</h2>
+ <p>All errors defined in this specification implement the following
+ interface:</p>
+
+ <pre class="idl"><span class="idlInterface" id="idl-def-MediaError">[<span class="extAttr">NoInterfaceObject</span>]
+interface <span class="idlInterfaceID">MediaError</span> {
+<span class="idlAttribute"> readonly attribute <span class="idlAttrType">DOMString</span> <span class="idlAttrName"><a href="#widl-MediaError-name">name</a></span>;</span>
+<span class="idlAttribute"> readonly attribute <span class="idlAttrType">DOMString?</span> <span class="idlAttrName"><a href="#widl-MediaError-message">message</a></span>;</span>
+<span class="idlAttribute"> readonly attribute <span class="idlAttrType">DOMString?</span> <span class="idlAttrName"><a href="#widl-MediaError-constraintName">constraintName</a></span>;</span>
+};</span></pre><section id="attributes-4"><h3 id="h3_attributes-4" role="heading" aria-level="2"><span class="secno">7.1 </span>Attributes</h3><dl class="attributes"><dt id="widl-MediaError-constraintName"><code>constraintName</code> of type <span class="idlAttrType">DOMString</span>, readonly , nullable</dt><dd>
+ <p>This attribute is only used for some types of errors. For <code>
+ <a class="idlType" href="#idl-def-MediaError"><code>MediaError</code></a></code> with a name of
+ <code>ConstraintNotSatisfiedError</code>, this attribute <em title="MUST" class="rfc2119">MUST</em> be set
+ to the name of the constraint that caused the error.</p>
+ </dd><dt id="widl-MediaError-message"><code>message</code> of type <span class="idlAttrType">DOMString</span>, readonly , nullable</dt><dd>A UA-dependent string offering extra human-readable information about
+ the error.</dd><dt id="widl-MediaError-name"><code>name</code> of type <span class="idlAttrType">DOMString</span>, readonly </dt><dd><p>The name of the error</p></dd></dl></section>
+<div class="note"><div id="h_note_8" role="heading" aria-level="2" class="note-title"><span>Note</span></div><div class="">Open Issue: We may make MediaError inherit from DOMError
+ once the definition of DOMError is stable.</div></div>
+
+ <div class="note"><div id="h_note_9" role="heading" aria-level="2" class="note-title"><span>Note</span></div><div class="">Open Issue: Do we want to allow the constraintName attribute to
+ contain multiple constraint names? In many cases the error is raised as soon
+ as a single unsatisfied mandatory constraint is found, but in others it may
+ be possible to determine that multiple constraints are not satisfied.</div></div>
+
+<p> The following interface is defined for cases when a MediaError is raised
+as an event:</p>
+
+
+ <pre class="idl"><span class="idlInterface" id="idl-def-MediaErrorEvent"><span class="idlDictionary" id="idl-def-MediaErrorEventInit">dictionary <span class="idlDictionaryID">MediaErrorEventInit</span> : <span class="idlSuperclass">EventInit</span> {
+<span class="idlMember"> <span class="idlMemberType"><a class="idlType" href="#idl-def-MediaError"><code>MediaError</code></a></span> <span class="idlMemberName"><a href="#widl-MediaErrorEventInit-error">error</a></span>;</span>
+};</span><br><br>[<span class="idlCtor"> <span class="idlCtorKeyword"></span><span class="idlCtorName"><a href="#widl-ctor-MediaErrorEvent--DOMString-type-MediaErrorEventInit-eventInitDict">Constructor</a></span> (<span class="idlParam"><span class="idlParamType">DOMString</span> <span class="idlParamName">type</span></span>, <span class="idlParam"><span class="idlParamType"><a class="idlType" href="#idl-def-MediaErrorEventInit"><code>MediaErrorEventInit</code></a></span> <span class="idlParamName">eventInitDict</span></span>)</span>]
+interface <span class="idlInterfaceID">MediaErrorEvent</span> : <span class="idlSuperclass">Event</span> {
+<span class="idlAttribute"> readonly attribute <span class="idlAttrType"><a class="idlType" href="#idl-def-MediaError"><code>MediaError</code></a></span> <span class="idlAttrName"><a href="#widl-MediaErrorEvent-error">error</a></span>;</span>
+};</span></pre><section id="constructors-4"><h3 id="h3_constructors-4" role="heading" aria-level="2"><span class="secno">7.2 </span>Constructors</h3><dl class="constructors"><dt id="widl-ctor-MediaErrorEvent--DOMString-type-MediaErrorEventInit-eventInitDict"><code>MediaErrorEvent</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">type</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><tr><td class="prmName">eventInitDict</td><td class="prmType"><code><a class="idlType" href="#idl-def-MediaErrorEventInit"><code>MediaErrorEventInit</code></a></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="prmDsc"></td></tr></tbody></table></dd></dl></section><section id="attributes-5"><h3 id="h3_attributes-5" role="heading" aria-level="2"><span class="secno">7.3 </span>Attributes</h3><dl class="attributes"><dt id="widl-MediaErrorEvent-error"><code>error</code> of type <span class="idlAttrType"><a class="idlType" href="#idl-def-MediaError"><code>MediaError</code></a></span>, readonly </dt><dd>
+
+ </dd></dl></section>
+
+ <section id="dictionary-mediaerroreventinit-members"><h3 id="h3_dictionary-mediaerroreventinit-members" role="heading" aria-level="2"><span class="secno">7.4 </span>Dictionary <a href="#idl-def-MediaErrorEventInit" class="idlType"><code>MediaErrorEventInit</code></a> Members</h3><dl class="dictionary-members"><dt id="widl-MediaErrorEventInit-error"><code>error</code> of type <span class="idlMemberType"><a class="idlType" href="#idl-def-MediaError"><code>MediaError</code></a></span></dt><dd>
+ <p> </p>
+ </dd></dl></section>
+
+
+ </section>
<section id="event-summary" class="informative">
- <!--OddPage--><h2 id="h2_event-summary" role="heading" aria-level="1"><span class="secno">7. </span>Event summary</h2><p><em>This section is non-normative.</em></p>
+ <!--OddPage--><h2 id="h2_event-summary" role="heading" aria-level="1"><span class="secno">8. </span>Event summary</h2><p><em>This section is non-normative.</em></p>
<p>The following event fires on <code>
<a class="idlType" href="#idl-def-MediaStream"><code>MediaStream</code></a>
@@ -2392,11 +2437,11 @@
</td>
<td>
- <code>Event</code>
+ <code>MediaErrorEvent</code>
</td>
<td>
- <p>This event fires asynchronously for each affected
+ <p>This error event fires asynchronously for each affected
track (when multiple tracks share the same source) after
the user agent has evaluated the current constraints
against a given <code>sourceId</code> and is not
@@ -2409,11 +2454,7 @@
the <code>"muted"</code> <a class="internalDFN" href="#dom-mediastreamtrack-readystate">readyState</a>) until the
application adjusts the constraints to accommodate the
source's capabilities.</p>
- <p>The "overconstrained" event is a simple event of
- type <code>Event</code>; it carries no information about
- which constraints caused the source to be
- over-constrained (the application has all the necessary
- APIs to figure it out).</p>
+
</td>
</tr>
@@ -2444,18 +2485,18 @@
<section rel="bibo:Chapter" resource="#ref" typeof="bibo:Chapter" id="enumerating-devices">
- <!--OddPage--><h2 id="h2_enumerating-devices" role="heading" aria-level="1"><span class="secno">8. </span>Enumerating Local Media Devices</h2>
+ <!--OddPage--><h2 id="h2_enumerating-devices" role="heading" aria-level="1"><span class="secno">9. </span>Enumerating Local Media Devices</h2>
<p>This section describes an API that the script can use to query the user
agent about connected media input and output devices.</p>
<section id="navigatorusermedia">
- <h3 id="h3_navigatorusermedia" role="heading" aria-level="2"><span class="secno">8.1 </span>NavigatorUserMedia</h3>
[483 lines skipped]
Received on Thursday, 26 December 2013 03:19:23 UTC