- 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